Effective C# 原则40:根据需求选择集合
2009-02-19 08:17:44 来源:WEB开发网int j = _numbers[ 50 ];
另外,访问数组时还可以用foreach迭代,或者使用枚举器:
foreach ( int i in _numbers )
Console.WriteLine( i.ToString( ) );
// or:
IEnumerator it = _numbers.GetEnumerator( );
while( it.MoveNext( ))
{
int i = (int) it.Current;
Console.WriteLine( i.ToString( ) );
}
如果准备存储单一次序的对象,你应该使用数组。但实际上你的数据结构往往比这复杂的多。这很快诱使我们回到了C风格上的锯齿数组,那就是一个数组里存储另一个数组。有些时候这确实是你想要的,每个外层元素都是内层的一个数组:
public class MyClass
{
// Declare a jagged array:
private int[] [] _jagged;
public MyClass()
{
// Create the outer array:
_jagged = new int[5][];
// Create each inner array:
_jagged[0] = new int[5];
_jagged[1] = new int[10];
_jagged[2] = new int[12];
_jagged[3] = new int[7];
_jagged[4] = new int[23];
}
}
每个内层的一维数组可以有同不的大小。在需要不同大小的数组时可以使用锯齿数据。使用锯齿数组的缺点是在列方面上的访问是底效的。检查一个每行上有三个列的锯齿数组时,每次访问都要做两个检测 。在行0列3上的元素和在行1列3的元素没有任何关系。只有多维数组才可在以列方面上的访问有一定的效率。过去,C和C++程序使用二维或多维数组时是把它们映射到一个一维数组上。对于老式的C和C++程序员,这样的标记应该很清楚:
- ››根据经纬度坐标取详细地址(包括国,省,市,街道...
- ››根据浏览器和分辨率调用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:选择安全的代码
更多精彩
赞助商链接