C#中声明一个常量数组

  想在C#类中声音一个常量数组,类型为int,里面有初始化的内容且不可更改。习惯性的写上了public const int[] a = {1,2,3,4,5}这样的格式,结果编译就给我报错了。后面尝试过在类中各种const,都是会报错的。
  在C#中,只有byte、char、short、int、long、float、double、decimal、bool、string、enum等这些非引用类型可以定义为常量,其他的引用类型都是不可以的定义为常量的。但是可以用readonly来替代,如:public readonly int[] a = { 1, 2, 3, 4, 5 };,但是这样也有缺陷。不能给a重新赋值,但是可以修改数组a内的值。

public readonly int[] a = { 1, 2, 3, 4, 5 };

// 这样是会报错的,修改了a的值
a = new int[]{4,5,6}

// 但这样是可以的
a[1] = 5

用C++中的指针来解析就是,a相当于是一个指向 { 1, 2, 3, 4, 5 }数组地址的指针,readonly只是表明a指向的地址不能改变,但是原地址内的数据是可以改变的。

0%