WEB开发网
开发学院软件开发C语言 Effective C# 原则40:根据需求选择集合 阅读

Effective C# 原则40:根据需求选择集合

 2009-02-19 08:17:44 来源:WEB开发网   
核心提示: 对于数组类的概念而言,在C#的1.x发布版中,Effective C# 原则40:根据需求选择集合(7),没有一个集合类是强类型的,它们都是存储的对象引用,我就说明过,你可以直接使用[]标记来访问一个数组里的元素,C#的范型将会在所有这些拓扑上包含新的版本,这会是一个最好的方法来创建类型安

对于数组类的概念而言,在C#的1.x发布版中,没有一个集合类是强类型的。它们都是存储的对象引用。C#的范型将会在所有这些拓扑上包含新的版本。这会是一个最好的方法来创建类型安全的集合。同时,目前的System.Collections 名字空间中包含了抽象的基类,利用这些基类,你可以在类型不安全的集合上创建你自己的类型安全的接口:CollectionBase 和ReadOnlyCollectionBase 提供了列表和向量结构的基类。DictionaryBase 提供了键/值对应的基类。DictionaryBase类是建立在Hashtable上的,它的性能与Hashtable是一致的。

(译注:在C#1.x中,我们其实可以合建类型安全的集合,当然这只是利用编译器一些特性,例如:

public class MyObject
{
}
public class MyObjectCollection : ArrayList
{
 [ObsoleteAttribute("Please use specify object.",true)]
 public override int Add(object value)
 {
 return base.Add (value);
 }
 public int Add(MyObject value)
 {
 return base.Add (value);
 }
 new public MyObject this[int index]
 {
 get
 {
  return base[index] as MyObject;
 }
 set
 {
  base[index] = value;
 }
 }
}
这样就可以简单的验证集合的类型了,当然,本质上还是类型不安全的,这只是一个折衷的办法。

任何时候,你的类型包含集合时,你可能想要把这些集合在你的类上暴露给你的用户。你有两个方法:使用索引或者使用IEnumerable接口。记住,在这一原则的一开始,我就说明过,你可以直接使用[]标记来访问一个数组里的元素,而且你可以用foreach来迭代数组里的任何元素。

上一页  2 3 4 5 6 7 8  下一页

Tags:Effective 原则 根据

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接