我正在尝试使用 c# 对象初始化程序创建一个对象。但是该类已经根据需要具有一个带有一个参数的构造函数,并且我不需要默认构造函数,因此我没有提供一个。当类中有用户提供的构造函数时,编译器也不会提供默认构造函数。
现在,当我尝试使用对象初始化程序创建此类的实例时,问题就出现了:
public class Foo
{
public int Data { get; set; }
public Foo(int Data)
{
this.Data = Data;
}
}
我像这样实例化类:
Foo f=new Foo { Data=10};
现在我得到一个编译时错误:
“Foo 不包含采用 0 参数的构造函数”
我知道错误,这是因为缺少默认构造函数。当我不需要默认构造函数时,为什么要提供一个仅用于使用对象初始化器的构造函数?所以我只是想知道,是否有任何其他方式(风格,语法)我可以使用这个对象初始化器而不显式提供默认构造函数?
我检查了这个 MSDN 链接,它说如果你的类中有 PRIVATE 默认构造函数,则不能使用对象初始化器,但我这里没有私有默认构造函数。