在列表创建中调用重载的构造函数

KiM*_*MaN -1 c#

我的班级中有2个构造函数,例如以下代码:

class Foo 
{
    private int a {get; set;}
    public Foo(int val)
    {
        a = val;
    }
    public Foo() : this(0) {}
}
Run Code Online (Sandbox Code Playgroud)

我在列表中使用该类,所以当我像这样调用列表的构造时: L = new List<Foo>()它可以工作,但是如果我想L = new List<Foo>(10)在示例中使用重载的构造函数,我将无法使用,那么有人可以向我展示如何做到这一点吗?谢谢。

Jon*_*eet 10

构造一个时List<Foo>,您根本不会调用Foo构造函数-根本不会Foo创建任何对象。这段代码:

L = new List<Foo>();
Run Code Online (Sandbox Code Playgroud)

构造一个空的 List<Foo>。如果要添加任何元素,可以这样:

L.Add(new Foo());
L.Add(new Foo(10));
Run Code Online (Sandbox Code Playgroud)

或使用集合初始化程序:

L = new List<Foo>
{
    new Foo(),
    new Foo(10)
};
Run Code Online (Sandbox Code Playgroud)

这样您就可以根据Foo自己的喜好构造对象(或使用现有的引用)。