我的班级中有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)
,那么谁能向我展示如何做到这一点呢?
谢谢。
答案 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());
希望有帮助。