C#基础之数组、索引器、装箱拆箱

数组
数组在 C# 中比 C++ 中要高级很多。数组分配于堆中,所以是引用类型的。你不能访问数组边界外的元素。所以 C# 防止你引发那种 bug。同时也提供了迭代数组元素的帮助函数。foreach 是这样的迭代语句之一。C++ 和 C# 数组的语法差异在于:

  1. 方括号在类型后面而不是在变量名后面2. 创建元素使用 new 运算符3. C# 支持一维、多维和交错数组(数组的数组)
    例子:

int[] array = new int[10]; // int 型一维数组for (int i = 0; i < array.Length; i++)
array[i] = i;
int[,] array2 = new int[5,10]; // int 型二维数组array2[1,2] = 5;
int[,,] array3 = new int[5,10,5]; // int 型三维数组array3[0,2,4] = 9;
int[][] arrayOfarray = new int[2]; // int 型交错数组 - 数组的数组
arrayOfarray[0] = new int[4]; arrayOfarray[0] = new int[] {1,2,15};

索引器
索引器用于书写一个可以通过使用 [] 像数组一样直接访问集合元素的方法。你所需要的只是指定待访问实例或元素的索引。索引器的语法和类属性语法相同,除了接受作为元素索引的输入参数外。
例子:
注意:CollectionBase 是用于建立集合的库类。List 是 CollectionBase 中用于存放集合列表的受保护成员。

class Shapes: CollectionBase{
public void add(Shape shp) {
List.Add(shp); }
//indexer public Shape this[int index] {
get { return (Shape) List[index];
}set {
List[index] = value ; }
}}

装箱/拆箱
装箱的思想在 C# 中是创新的。正如前面提到的,所有的数据类型,无论是内建的还是用户定义的,都是从 System 命名空间的基类 object 继承的。所以基础的或是原始的类型打包为一个对象称为装箱(Boxing),相反的处理称为拆箱(Unboxing)。
例子:

class Test{
static void Main() {
int myInt = 12;object obj = myInt ;intmyInt2=(int)obj; //拆箱
}}

// 装箱

例程展示了装箱和拆箱两个过程。一个 int 值可以被转换为对象,并且能够再次转换回 int。当某种值类型的变量需要被转换为一个引用类型时,便会产生一个对象箱保存该值。拆箱则完全相反。当某个对象箱被转换回其原值类型时,该值从箱中拷贝至适当的存储空间。

你可能感兴趣的:(C#基础之数组、索引器、装箱拆箱)