我在msdn上看到泛型类List,说是要取代arraylist,但是我看到它举例的首先你要实例化这个类,List,并且指定这个类是什么类型,比如
List<string> dinosaurs = new List<string>(); dinosaurs.Add("Tyrannosaurus");
dinosaurs.Add("Amargasaurus");
dinosaurs.Add("Mamenchisaurus");
dinosaurs.Add("Deinonychus");
dinosaurs.Add("Compsognathus");
但是这样的话就没有arraylist那样灵活,即使你实例化了arraylist,也可以加入其它的值类型等。那么List类集合只有容纳一系列类型必须完全一致的类,是吗?那功能上要大打折扣啊,又没有高手对此提出疑义啊?
List<string> dinosaurs = new List<string>(); dinosaurs.Add("Tyrannosaurus");
dinosaurs.Add("Amargasaurus");
dinosaurs.Add("Mamenchisaurus");
dinosaurs.Add("Deinonychus");
dinosaurs.Add("Compsognathus");
但是这样的话就没有arraylist那样灵活,即使你实例化了arraylist,也可以加入其它的值类型等。那么List类集合只有容纳一系列类型必须完全一致的类,是吗?那功能上要大打折扣啊,又没有高手对此提出疑义啊?
解决方案 »
- Ext Tabpanel 如何改变选项卡的样式
- C#项目 部署的 时候,可以添加 序列号么
- 请问sqlserver2005能否存放一亿条以上的数据?
- 关于 byte[] 转 字符串的问题 无法显示
- WPF DataGrid 主从表数据绑定方式
- !!!!请推荐winform下免费且好用的图表控件!!!!!!!
- File.delete不支持通配符?
- AspNetForms安装后为什么控件都出错啊
- 求教高手,.net和java 比,优势在哪里??
- 请问NET是以XML为核心那么到底XML有什么特别呢 ?
- 有人做过短信猫的开发吗?给个实例看看咯?
- 求助:winform中使用dataadapter的InsertCommand和Update()方法插入不成功~!
-----------------------在决定使用 List 还是使用 ArrayList 类(两者具有类似的功能)时,记住 List 类在大多数情况下执行得更好并且是类型安全的。如果对 List 类的类型 T 使用引用类型,则两个类的行为是完全相同的。但是,如果对类型 T 使用值类型,则需要考虑实现和装箱问题。如果对类型 T 使用值类型,则编译器将特别针对该值类型生成 List 类的实现。这意味着不必对 List 对象的列表元素进行装箱就可以使用该元素,并且在创建大约 500 个列表元素之后,不对列表元素装箱所节省的内存将大于生成该类实现所使用的内存。 确保用于类型 T 的值类型实现 IEquatable 泛型接口。如果未实现,则诸如 Contains 这样的方法必须调用 Object.Equals(Object) 方法,后者对受影响的列表元素进行装箱。如果值类型实现 IComparable 接口,并且您拥有源代码,则还应实现 IComparable 泛型接口以防止 BinarySearch 和 Sort 方法对列表元素进行装箱。如果您不拥有源代码,则将一个 IComparer 对象传递给 BinarySearch 和 Sort 方法。使用 List 类的特定于类型的实现,而不是使用 ArrayList 类或自己编写强类型包装集合,这样是很有好处的。原因是您的实现必须做 .NET Framework 已经为您完成的工作,并且公共语言运行库能够共享 Microsoft 中间语言代码和元素据,这是您的实现所无法做到的。
-------------
这样不是可以起到一个数据类型的约束,避免了不正确插入数据,而且它是在编程时检查的,不至于等到运行时才抛出数据类型错误的异常,
除去效率问题,楼主的问题其实就跟问:我们既然已经有了public了,为什么还要internal、protected、privte干什么?