Code Bye

C#数组初始化中的常量与变量

看《C#入门经典》声明数组时遇到以下问题:
书中讲到下边两处感觉是矛盾的:
1.可以使用非常量的变量来进行初始化,例如:
int [ ] myIntArray = new int [arraySize];
2.假如使用变量定义其大小,该变量必须是一个常量,例如:
const int arraySize = 5;
int [ ] myIntArray = new int [arraySize] {5,9,10,2,99};
假如省略了关键字const,运行这段代码就会失败。
————————————————————————————————————————
本人在VS2013中输入以下三段代码:
1. int n = 5;
int [] myArray = new int[n];
2. int n = 5;
int [] myArray = new int[n] {1,2,3,4,5};
3. const int n = 5;
int[] myArray = new int[n] {1,2,3,4,5};
第一段和第三段均可以编译通过,第二段会报下边的错误

————————————————————————————————————————
想问一下大家,这两种说法不是有冲突的吗?假如没有冲突,假如本人按照代码1所示的用非常量的变量初始化了一个数组,那么本人后边该怎么给数组中的内容赋值呢?
解决方案

10

int n = 5;
int [] myArray = new int[n];
for (int i = 0; i<n; i++)
{
   myArray[i] = i + 1; 
}

25

数组的3中写法
1.   int[] i=new int[5];       i[0]=1;i[1]=2……
2.   int[] i=new int[5]{1,2,3,4,5};
3.   int[] i={1,2,3,4,5};
这三种写法本人个人决定2最没意思,实际项目要么只是知道数组的长度,那么1就够用了,要么知道了元素,那么3就够用了,2这种又写元素个数又写元素的方式感觉没必要,这种写法的特殊点就在于长度和元素个数必须相等;
那么也就解释了你的问题,你的2的方法是一个变量,但你已经写明了元素是5个,但前面的的n是变量,特别要注意,虽然上一行代码是int n=5,但对于编译器来说他是不知道的,他只管当前,当前这个n是多少他并不知道,后面有些5个元素,那么这个n就必须是5,但当前值未知,所以报错

5

引用:

2.假如使用变量定义其大小,该变量必须是一个常量,例如:

请拍张照来看看


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明C#数组初始化中的常量与变量