为什么在c#中int[] i = new int[2];i={1,2};是错误的。
4个回答
展开全部
你的问题是为什么是错误的,楼上几位都给出了怎么做是正确的,但没说什么错误。
先来说一下为什么错误。
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 = 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}创建一个数组,再给其他对象赋值了。
展开全部
语法错误 例子:桌子分为左右两块 ,给桌子上两块分别放一个东西顺序是?你会给左边先放一个再给右边放一个,或者从右开发放。 怎么也不可能两个同时放。一个道理,定义了一个2个长度的数组,你要放连个值,也是有顺序的放才行。i[0]=1;i[1]=2;这样就不会错。
满意回答 请采纳 评分 谢谢
满意回答 请采纳 评分 谢谢
更多追问追答
追问
那为什么这样 int[] i = {1,2} 就可以呢?
追答
int[] i = {1,2}这个意思就是 例如: 你放了多少东西 这个桌子就是多大的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
int[] i = { 1, 2 };你直接这么写就行了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
赋值要i[1]=1;i[2]=2;
或者int[] i=new int[2]{1,2};
或者int[] i=new int[2]{1,2};
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询