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

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

 2009-02-19 08:17:44 来源:WEB开发网   
核心提示: 你可以为你的类创建多维的索引,以C++里你可能须要重载[]操作,Effective C# 原则40:根据需求选择集合(8),而在C#里,你可以创建多维索引:public int this [ int x, int y ]{get{return ComputeValue( x, y );}}

你可以为你的类创建多维的索引,以C++里你可能须要重载[]操作。而在C#里,你可以创建多维索引:

public int this [ int x, int y ]
{
 get
 {
  return ComputeValue( x, y );
 }
}

添加对索引器的支持就是说你的类型包含一个集合。这也就是说你应该支持IEnumerable 接口。IEnumerable 提供了标准的机制来迭代所有的集合元素:

public interface IEnumerable
{
 IEnumerator GetEnumerator( );
}

GetEnumerator 方法返回一个实现了IEnumerator 接口的对象。IEnumerator 接口支持集合的历遍:

public interface IEnumerator
{
 object Current
 { get; }
 bool MoveNext( );
 void Reset( );
}

另外,在使用IEnumerable 接口时,如果你的类型模型是数组,你应该考虑IList 和ICollection 接口。如果你的类型模型是字典,你应该考虑实现IDictionary 接口。你可以自己创建对这些功能强大的接口的实现,而且你可能要花上更多的几页代码来解释如何实现。但这里有一个简单的解决方案:在你创建自己的特殊集合类时从CollectionBase 或者DictionaryBase 派生你的类。

让我们回顾一下今天的内容,最好的集合取决于你对操作的实现,以及应用程序对空间和时间的目标要求。在大多数情况下,数组提供了最高效的容器。C#里扩展的多维数组,可以简单的实现多维的结构,而且没有性能的损失。当我们的应用程序须要对元素进行更灵活的添加和移动操作时,使用众多集合中更活越的一个就行了。最后,当你创建自己的集合模型类时,不论什么时候都实现索引器和IEnumerable接口。

上一页  3 4 5 6 7 8 

Tags:Effective 原则 根据

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