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

时间:2019-07-26 15:31:48

标签: c#

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

class Foo 
{
    private int a {get; set;}
    public Foo(int val)
    {
        a = val;
    }
    public Foo() : this(0) {}
}

我在列表中使用此类,所以当我像这样调用列表的构造时: L = new List<Foo>()可以正常工作,但是如果我不能使用示例中的重载构造函数L = new List<Foo>(10),那么谁能向我展示如何做到这一点呢? 谢谢。

2 个答案:

答案 0 :(得分:9)

构造datetime.datetime.timestamp(utc_dt) 时,根本就不会调用List<Foo>构造函数-根本不会创建任何Foo对象。这段代码:

Foo

构造一个 empty L = new List<Foo>(); 。如果要向其中添加任何元素,可以这样:

List<Foo>

或使用集合初始化程序:

L.Add(new Foo());
L.Add(new Foo(10));

这使您可以根据需要构造L = new List<Foo> { new Foo(), new Foo(10) }; 对象(或使用现有引用)。

答案 1 :(得分:0)

执行以下命令时,

L = new List<Foo>();

将创建一个List类的新实例,因此将在此处调用的构造函数是System.Collections.Generic中的List类构造函数。

但是,列表对象将保留对“ Foo”类的引用,但不会创建“ Foo”的对象,因此不会调用构造函数。

但是,当您执行以下几行时,构造函数将被调用

 L.Add(new Foo(100));
 L.Add(new Foo());

希望有帮助。