我是c#,并且通过修改visual studio中的现有代码将程序放在一起。我正在寻找一些指导来理解创建列表的两种方式之间的区别。都编译:创建新列表的细微差异?
List <int> myList;
//versus
List <int> myList = new List <int>();
我是c#,并且通过修改visual studio中的现有代码将程序放在一起。我正在寻找一些指导来理解创建列表的两种方式之间的区别。都编译:创建新列表的细微差异?
List <int> myList;
//versus
List <int> myList = new List <int>();
这并不微妙。一个创建一个列表,一个不创建。
第一个只是声明对列表的引用。在使用之前,您必须稍后创建列表。
第二个声明对列表的引用并创建一个列表,并将引用设置为同时引用新列表。
第一个List myList;
简单地声明了可变,但该值是未分配的。第二个实际创建一个新的List对象,其中没有条目。
在大多数情况下,您应该使用第二个选项。
第一行只是创建一个变量来保存对列表的引用。
第二个初始化一个空列表refrence。
试图调用上的参考的任何方法/访问属性而不初始化它会在一个空指针异常
List <int> myList;
最终是相同的写入
List <int> myList = null; // aka it is not a list yet
如果'myList'是一个局部变量,则不是这样。 – 2012-01-27 20:35:39
第一行没有按创建一个List<int>
对象。它只声明一个名为myList
的变量,其类型为List<int>
。如果你试图用这个变量做任何事情,编译器会抱怨,因为它是未初始化的。
第二行声明该变量并将其初始化为一个值:一个新的List<int>
对象。
虽然这是真的,但我猜测@GIStack可以使用更多的帮助:第一条语句**声明**一个类型为“List”的变量,而第二条语句声明**并创建**(或者实例,如果你愿意)类型的变量列表'' –
vlad
2012-01-27 20:31:57
如果你使用的第一个,然后在后面的程序某些时候,你可能会使用这行:myList中=新名单();为了赋予变量一个值。但是你也可以说myList = cityList;其中cityList是另一个类型为List 的变量,在您的程序的其他地方声明和初始化。 –
2012-01-27 20:32:29