C Sharp(七)
發佈於 2018-10-28
这一篇,我们讲讲 C# 中的数组对象及其协变概念。
数组是由变量名表示的一组同类型的数据元素,每个元素可以通过索引来访问。
C# 数组的特点:
C# 支持一维数组和多维数组,多维数组又分为矩形数组和交错数组。
数组实例是从 System.Array 继承来的对象,继承了很多属性和方法:
注意: 数组是引用类型,数组元素可以是值类型也可以是引用类型,这一点与 Ocjective-C 不同,Ocjective-C 中的数组元素不能是基本类型。
我们可以在类型和变量名之间加中括号来声明一维数组:
long[] array; |
---|
要实例化一维数组,我们使用数组创建表达式,使用 new 操作符,后跟基类名称和中括号,中括号里要有数组长度:
int[] array = new int[5]; |
---|
要访问数组元素,要使用索引:
int[] array = new int[5]; array[2] = 10; int intVal = array[2]; |
---|
当数组创建后,每个元素会自动初始化默认值:
我们还可以使用初始化列表显式初始化数组元素:
int[] array = new int[] { 2, 3, 4, 5}; |
---|
当在一条语句声明并初始化数组时,可以使用快捷语法:
int[] array = {1, 2, 3, 4}; |
---|
我们可以使用 foreach 语句遍历数组元素:
int[] array = {1, 2, 3, 4}; foreach (var item in array) { //...item } |
---|
协变和逆变我们之后说泛型的时候会细讲,这里我们只是提一下数组中的协变。 协变是指: 即使某个对象不是数组的基类型,我们也可以把他赋值给数组元素。以下情况可以使用数组协变:
由于基类和派生类总存在隐式转换,因此我们可以把派生类对象赋值给基类型数组元素:
class A {} class B : A {} class Program { static void Main() { A[] array = new A[3]; A[0] = new B(); } } |
---|