不能使用的公共非泛型List的构造方法

时间:2019-06-07 18:22:40

标签: c# list

当我右键单击List()类并单击“转到定义”时,我可以看到该类的所有成员的一些原始Microsoft代码。 所以没什么新鲜的,但第一行是

[...]public List();

因此,似乎List类具有公共的非泛型构造函数。这是这行对我说的,但是它很明显是错误的,因为您不能创建一个非通用列表。 那么,为什么List类定义中有这行代码? 为什么存在?

1 个答案:

答案 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);

无论如何我们都必须更改所有构造函数,这是没有意义的,因为构造函数本身并没有改变。