当我右键单击List()类并单击“转到定义”时,我可以看到该类的所有成员的一些原始Microsoft代码。 所以没什么新鲜的,但第一行是
[...]public List();
因此,似乎List类具有公共的非泛型构造函数。这是这行对我说的,但是它很明显是错误的,因为您不能创建一个非通用列表。 那么,为什么List类定义中有这行代码? 为什么存在?
答案 0 :(得分:0)
由于类型本身-touch /usr/local/bin/anaconda2/lib/python2.7/site-packages/easy-install.pth
是泛型的,因此可以在构造函数中使用泛型参数List<T>
。例如,T
具有以下构造函数:
List<T>
但是无论我们调用该构造函数时使用哪种泛型类型……
public List (System.Collections.Generic.IEnumerable<T> collection);
...构造函数本身不需要泛型-也就是说,它不需要泛型类型参数。在创建对象时要指定该值。
如果我们必须再次在构造函数中包含通用参数,就像这样...
var stringList = new List<string>(arrayOfStrings collection);
var intList = new List<int>(listOfInt collection);
...它不会添加任何新信息。
如果我们正在创建一个新类并意识到需要添加通用参数该怎么办?我们可以使用与这些通用参数无关的构造函数,例如:
public List<T>();
public List<T>(System.Collections.Generic.IEnumerable<T> collection);
无论如何我们都必须更改所有构造函数,这是没有意义的,因为构造函数本身并没有改变。