学习C#数组时,经常会遇到C#数组初始化问题,这里将介绍C#数组初始化问题的解决方法。
C#数组初始化
1、int[] iArray = new int[3]{2, 3, 4} 花括号被称为数组初始化器,数组初始化器只能在声明数组变量时使用,不能在声明数组之后使用C#数组初始化,还可以不指定数组的大小 int[] iArray = new int[]{2, 3, 4} 编译器会自动计算,使用C#编译器还有一种更简化的形式 int[] iArray = {2, 3, 4};
2、分清数组维数和每一维长度(上下界)的区别;
3、用括号声明数组是C#中使用Array类的记号,在后台使用C#语法,会创建一个派生于基础Array的新类。这样,就可以使用Array类为每个C#数组定义的方法和属性了。例如Length属性,还可以使用foreach语句迭代数组,其实这是使用了Array类中的GetEnumerator()方法,或者说在Array类中实现了枚举器。
4、Array类是一个抽象类,不能使用构造函数来创建数组,但除了可以使用C#语法创建数组实例外,还可以使用它的CreateInstance()静态方法创建数组,如果事先不知道元素类型,或者想创建索引不基于0的数组,就可以使用改静态方法。
5、数组是引用类型,所以将一个数组赋予另一个数组变量,就会得到两个指向同一个数组的变量。而复制数组实现ICloneable接口。这个接口定义的Clone()方法会创建(无需创建新数组则使用CopyTo方法或Array.Copy())一个数组的浅副本,也就是说,如果数组元素是值类型,就会复制所有的值,如果数组包含的是引用类型,则不复制元素本身,而只是复制引用。如果需要包含引用类型的数组的深副本,就必须迭代数组,创建新对象。
6、Array类实现了对数组中元素的冒泡排序。Sort()方法需要数组中的元素实现IComparable接口。简单类型,如String和Int32实现了IComparable接口(升序)。调用语法为Array.Sort(...)
7、类对象如果需要在数组或集合中能够被排序,就必须实现ICompable接口,这个接口定义了一个方法CompareTo();但如果排序的方式比较复杂,如需要对哪个字段进行排序,是升序还是降序,或者不能修改类的定义,则可以针对该类定义一个IComparer接口,在调用数组或集合的Sort()方法时执行它,IComparer接口定义了Compare()方法。
8、Array类实现了IEumerable、ICollection和IList接口,ICollection接口派生于IEnumerable,IList派生于ICollection。以上介绍C#数组初始化。
【编辑推荐】