没有默认构造函数的C#Object初始值设定项

Ala*_*ani -2 c# object-initializers

我正在尝试使用c#object initializer创建一个对象.但是该类已经有一个构造函数,根据需要有一个参数,我不需要默认的construcor,所以我没有提供一个.当类中有用户提供的构造函数时,编译器也不会提供默认构造函数.

现在当我尝试使用对象初始化程序创建此类的实例时出现问题:

public class Foo
{
    public int Data { get; set; }
    public Foo(int Data)
    {
        this.Data = Data;
    }
}
Run Code Online (Sandbox Code Playgroud)

我像这样实例化这个类:

 Foo f=new Foo { Data=10};
Run Code Online (Sandbox Code Playgroud)

现在我得到一个编译时错误:

"Foo不包含带0参数的构造函数"

我知道错误,这是因为缺少默认构造函数.当我不需要默认构造函数时,为什么我应该只使用对象初始化程序?所以我只是想知道,有没有其他方式(样式,语法)我可以使用这个对象初始化程序而不显式提供默认构造函数?

我检查了这个MSDN链接,它说如果你的类中有一个PRIVATE默认构造函数,你就不能使用对象初始化程序,但我这里没有私有的默认构造函数.

All*_*nek 5

如果您已经有一个构造函数接受正确初始化对象所需的参数,那么为什么不使用正确的构造函数语法呢?

Foo f = new Foo { Data = 10 };  // What you want (object initializer syntax)
Foo f = new Foo ( Data : 10 );  // What you can get (constructor syntax)
Run Code Online (Sandbox Code Playgroud)