2楼的这一句:
string[] why = { "谁", "说", "数", "组" , "不" , "能" , "直" , "接" , "赋" , "值" , "的" , "?"};
不知道是不是成功运行的,如果是,它应该是如下写法的简写:
string[] why = new string[]{ "谁", "说", "数", "组" , "不" , "能" , "直" , "接" , "赋" , "值" , "的" , "?"};
数组是一种引用对象,也就是如上,why并不代表数组本身,而是指向数组在内存中的地址。因此我们声明why时,仅仅是一个可以容纳string数组的一个变量的符号而已,它并不指向任何有用的对象。只有当使用new关键词初始化以后,它才具体指向这段字符串数组所在的内存位置。
为什么要这么做,是因为高级语言中,内存由运行时动态管理和分配,你写程序时并不知道这个程序将在内存的什么位置运行,对象在什么位置创建。
C#也提供了一些简略写法,再例如:
string A = "Hello";就是其中之一,我们看不到new关键字,但实际上它声明了一个A变量,并将A变量指向了存放Hello字符串所在的引用位置。