问个比较肤浅得C#问题!望高手回答! 最近开始学习C#。。 里面得对象跟集合还有泛行 头都搞大了。。 太多东西 脑子一下不好使 。 谁能用通俗点得语言帮我解释一下泛行具体得作用 跟他得定位。。 就是什么情况下用比较好! 我买得是本外国得书翻译过来得 他写得太专业化。。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 http://topic.csdn.net/u/20090622/21/df7f7b8a-61cd-4c8f-a964-0fe15377523d.html 采用比喻的方法:有两个仓库(内存空间)存放原材料,一个加工车间CPUA仓库和车间的距离比较近,存放值类型数据B仓库和车间的距离比较远,存放引用类型的数据车间进行生产的时候,到A仓库拿材料比较快,因为距离短但有时候有这种情况(装拆箱):int i=10;object o=i;本来10(值类型)这个内容在A仓库的,变为object(引用类型)后被放到B仓库了。这就相当于把A仓库的材料搬到B仓库,车间要用材料的时候跑了远路了比如以前的非泛型List里面的对象都是object引用类型,把int,struct等值类型的数据也往里面装,就相当于把A仓库的材料搬到B仓库去了,车间加起工来要跑远路取材料比如用一个非泛型的List ,要加工的时候,所有材料都要到B仓库去取了,因为List是object引用类型的,即使里面装的都是int 值类型的东西(完全可以放在A仓库的)。现在的泛型,就是一种强类型,泛型List<int>只能存放int类型,强行规定了A材料只能放在A仓库,B材料只能放在B仓库强类型的另一个好处是在敲代码的时候打一个点就有提示,不容易出错。比如list<Form>[0]. 就能点出Form类型的所有公共的方法属性事件如果用以前的非泛型,List[0]. 这个点就点不出东西 泛型的好处:void Add(int i){}void Add<T>(int i)where T:Struct{}//这两个方法因为第二个泛形而显得更加灵活好用比如碰到这种情况:var somedata=int[]{1,0.3f,22,36.23f,0};现在你就不能用Add(int i)了但你却可以用Add<T>这个这样用foreach(var item in somedata) this.Add<float>(item); 纠正下,上面void Add<T>(T t)where T:struct{ //...} 集合中的List比较常用。就跟vb中的动态数组差不多。注意List使用之前也要实例化。 如果使用过C++,就会发现,在.NET中,所有的泛型基本上都是相同的 vs2010报错 一个问题 DataTable类中的BeginLoadData()方法和EndLoadData()方向到底有什么作用?? C#窗体问题,急!! 小问题,大家帮忙解决下,利马给分,60少点了! 请教一简单问题! 怎么得到Server 端的IIS version, Server 操作系统,及语言,.NET runtime等信息? winform中datagridview纵向合并相同值的单元格的问题 一个简单的问题?高手们指教!!!!!!! 高手帮忙!!!1 求解一道循环编程题 如何用GDI+绘制简易动画效果?
A仓库和车间的距离比较近,存放值类型数据
B仓库和车间的距离比较远,存放引用类型的数据车间进行生产的时候,到A仓库拿材料比较快,因为距离短但有时候有这种情况(装拆箱):
int i=10;
object o=i;
本来10(值类型)这个内容在A仓库的,变为object(引用类型)后被放到B仓库了。
这就相当于把A仓库的材料搬到B仓库,车间要用材料的时候跑了远路了比如以前的非泛型List里面的对象都是object引用类型,把int,struct等值类型的数据也往里面装,就相当于把A仓库的材料搬到B仓库去了,车间加起工来要跑远路取材料
比如用一个非泛型的List ,要加工的时候,所有材料都要到B仓库去取了,因为List是object引用类型的,即使里面装的都是int 值类型的东西(完全可以放在A仓库的)。现在的泛型,就是一种强类型,泛型List<int>只能存放int类型,强行规定了A材料只能放在A仓库,B材料只能放在B仓库强类型的另一个好处是在敲代码的时候打一个点就有提示,不容易出错。
比如list<Form>[0]. 就能点出Form类型的所有公共的方法属性事件如果用以前的非泛型,List[0]. 这个点就点不出东西
void Add<T>(int i)where T:Struct{}//这两个方法因为第二个泛形而显得更加灵活好用比如碰到这种情况:var somedata=int[]{1,0.3f,22,36.23f,0};
现在你就不能用Add(int i)了但你却可以用Add<T>这个这样用
foreach(var item in somedata)
this.Add<float>(item);
//...
}