为什么在c#中int[] i = new int[2];i={1,2};是错误的。

 我来答
whm412
2013-03-27 · TA获得超过515个赞
知道小有建树答主
回答量:289
采纳率:66%
帮助的人:281万
展开全部
你的问题是为什么是错误的,楼上几位都给出了怎么做是正确的,但没说什么错误。
先来说一下为什么错误。

int[] i = new int[2]; //正确,声明了一个长度为2的一维数组,并且每个值都有初始值0

i={1,2}; //语法错误 {1,2}这个不符合C#语法,是不会编译通过。(主要是C#语法没提供这个方便性,如果自己写个编译器支持这个语法就可以编译通过了,呵呵。

int[] i = { 1, 2 }; //{1,2}只有在赋值语句右侧才符合C#语法,但也只是C#语法的简便写法
int[] i=new int[2]{1,2}; //这个是标准写法,在初始化时进行赋值
还有一种分开的写法
int[] i = new int[2]; i[0]=1;i[1]=2; //这个更灵活。
更多追问追答
追问
我是这样想的:int[] i;是定义一个数组类型的i,也就是说i的类型是int[].如果按照同是引用类型的的string的语法:定义一个字符串 string s; 就可用s=“hello word”初始化。所以我就觉得数组类型应该也是可以的啊。当然结果是不可以。我在想这两种引用类型到底有什么区别?
追答
string类型确实是引用类型,但它是一比较特殊的引用类型,C#有一些特殊的语法对它进行支持。
例如s=“hello word”就可以初始化,但这行代码里面实际上是创建了两个字符串实例。"hello word"是一个,之后给s赋值后又有一个。因为string是值不可改的引用类型。并且支持"hello word"这样的初始化语法。
而数组是真正的引用类型,当使用i={1,2};时,{1,2}在非实例化对象时,是不会被编译器编译的,也就是说除了在实例化对象时,编译器知道{1,2}代表什么意义外,其他情况编译器是不知道这个语法的。更别说使用{1,2}创建一个数组,再给其他对象赋值了。
xjxzhmin
2013-03-27 · TA获得超过147个赞
知道小有建树答主
回答量:333
采纳率:100%
帮助的人:120万
展开全部
语法错误 例子:桌子分为左右两块 ,给桌子上两块分别放一个东西顺序是?你会给左边先放一个再给右边放一个,或者从右开发放。 怎么也不可能两个同时放。一个道理,定义了一个2个长度的数组,你要放连个值,也是有顺序的放才行。i[0]=1;i[1]=2;这样就不会错。

满意回答 请采纳 评分 谢谢
更多追问追答
追问
那为什么这样 int[] i = {1,2} 就可以呢?
追答
int[] i = {1,2}这个意思就是  例如: 你放了多少东西 这个桌子就是多大的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
贵期1
2013-03-27 · TA获得超过147个赞
知道答主
回答量:119
采纳率:0%
帮助的人:54.8万
展开全部
int[] i = { 1, 2 };你直接这么写就行了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lnlllnnhf
2013-03-27 · TA获得超过249个赞
知道小有建树答主
回答量:203
采纳率:0%
帮助的人:195万
展开全部
赋值要i[1]=1;i[2]=2;

或者int[] i=new int[2]{1,2};
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式