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

bellawer 2016-07-12 03:55:30
看《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所示的用非常量的变量初始化了一个数组,那么我后边该怎么给数组中的内容赋值呢?
...全文
445 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
自由之矢 2020-07-02
  • 打赏
  • 举报
回复
应该是已经元素情况下,长度的定义必须为一个常量
bellawer 2016-07-13
  • 打赏
  • 举报
回复
引用 3 楼 shingoscar 的回复:
[quote=引用 楼主 bellawer 的回复:]2.如果使用变量定义其大小,该变量必须是一个常量,例如:
请拍张照来看看[/quote] 问题已经解决啦,感谢!
bellawer 2016-07-13
  • 打赏
  • 举报
回复
引用 2 楼 u012837409 的回复:
数组的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,但当前值未知,所以报错
哦哦,原来是这样,豁然开朗,谢谢指教
bellawer 2016-07-13
  • 打赏
  • 举报
回复
引用 1 楼 Forty2 的回复:
int n = 5;
int [] myArray = new int[n];
for (int i = 0; i<n; i++)
{
   myArray[i] = i + 1; 
}
太感谢啦!
Poopaye 2016-07-12
  • 打赏
  • 举报
回复
引用 楼主 bellawer 的回复:
2.如果使用变量定义其大小,该变量必须是一个常量,例如:
请拍张照来看看
带头大哥_ 2016-07-12
  • 打赏
  • 举报
回复
数组的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,但当前值未知,所以报错
Forty2 2016-07-12
  • 打赏
  • 举报
回复
int n = 5;
int [] myArray = new int[n];
for (int i = 0; i<n; i++)
{
   myArray[i] = i + 1; 
}

110,537

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧