Effective C# 原则40:根据需求选择集合
2009-02-19 08:17:44 来源:WEB开发网你可以为你的类创建多维的索引,以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接口。
- ››根据经纬度坐标取详细地址(包括国,省,市,街道...
- ››根据浏览器和分辨率调用CSS代码
- ››根据批量URL生成有书签的PDF文档的解决方案
- ››根据status信息对MySQL服务器进行优化
- ››Effective C# 原则40:根据需求选择集合
- ››Effective C# 原则41:选择DataSet而不是自定义的...
- ››Effective C# 原则42:使用特性进行简单的反射
- ››Effective C# 原则43:请勿滥用反射
- ››Effective C# 原则44:创建应用程序特定的异常类
- ››Effective C# 第6章:杂项
- ››Effective C# 原则45:选择强异常来保护程序
- ››Effective C# 原则47:选择安全的代码
更多精彩
赞助商链接