using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication3
{
class Program
{
static void Main(string[] args)
{
int[,] arr = new int[3,4]{ { 1, 2, 3, 4 }, { 5, 6, 7, 8 }, { 9, 10, 11, 12 } };//1正确
int[,] arr = new int[3,4];
arr = { { 1, 2, 3, 4 }, { 5, 6, 7, 8 }, { 9, 10, 11, 12 } };//2错误
/*请问以上arr数组定义为什么不正确,1定义的跟2定义的不是一回事吗?我把鼠标放在arr上提示的是(局部变量)int[,] arr 跟下面定义的数组应该也是一样的呀 */
int[,] arr = { { 1, 2, 3, 4 }, { 5, 6, 7, 8 }, { 9, 10, 11, 12 } };
}
}
}
int[,] arr = new int[3,4]; 这句不是new了吗只是没有给这个数组赋值而已? 下一句再赋值为什么就不行呢?
追答我已经说了啊 arr是初始化了 但是arr=后面的对象是一个初始化器 但因为没有new所以没有初始化 所以赋值是不正确的 这叫隐式类型 可用于数组中
详见msdn:
http://msdn.microsoft.com/zh-cn/library/bb384090.aspx
更多的关于为什么arr在初始化时不赋值 然后分开赋值时必须分配给一个new的对象的原因,见msdn:
http://msdn.microsoft.com/zh-cn/library/2yd9wwz4.aspx
不好意思本人比较笨 int[,] arr = { { 1, 2, 3, 4 }, { 5, 6, 7, 8 }, { 9, 10, 11, 12 } }; 这种写法不也没有new吗但它是正确的呀⊙﹏⊙
追答那是初始化多维数组不指定级别的一种方式 语法规定可以这样写的 在我上面的第二个msdn链接里已经写的很清楚了...你自己仔细看看
追问哎呀 我笨死了 还是没理解 不问了 分给你啦 谢谢回答那么多