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

C# 在列表创建中调用重载构造函数,c#,C#,我的类中有2个构造函数,如下代码所示: class Foo { private int a {get; set;} public Foo(int val) { a = val; } public Foo() : this(0) {} } 我在列表中使用这个类,所以当我调用列表的构造时,如下所示: L=new List()它可以工作,但是如果我想使用重载构造函数L=new List(10)在示例中,我不能,有人能告诉我怎么做吗? 谢谢。当

我的类中有2个构造函数,如下代码所示:

class Foo 
{
    private int a {get; set;}
    public Foo(int val)
    {
        a = val;
    }
    public Foo() : this(0) {}
}
我在列表中使用这个类,所以当我调用列表的构造时,如下所示:
L=new List()
它可以工作,但是如果我想使用重载构造函数
L=new List(10)
在示例中,我不能,有人能告诉我怎么做吗?
谢谢。

当您构建
列表时,您根本没有调用
Foo
构造函数-根本没有创建
Foo
对象。此代码:

L = new List<Foo>();
或使用集合初始值设定项:

L = new List<Foo>
{
    new Foo(),
    new Foo(10)
};
L=新列表
{
新Foo(),
新富(10)
};

这允许您以自己喜欢的方式构造
Foo
对象(或使用现有引用)。

执行以下操作时

L = new List<Foo>();
希望有帮助。

新建列表(10)
实例化一个容量为10的空列表。如果希望列表中填充单个
Foo
,调用
10
作为构造函数参数,请使用
newlist{newfoo(10)}
。如果您想要有一个只实例化
Foo
s和
10
作为值的列表,那么必须使用某种工厂方法或包装类。
L = new List<Foo>();
 L.Add(new Foo(100));
 L.Add(new Foo());