C#构造函数

Yip*_*Yay 12 c# constructor field initializing

有人可以建议我在编写C#构造函数时采取什么方法吗?

在其他语言中,C++一切都很好 - 通常不会使内部字段可见并为它们提供getter/setter.

这意味着,您可以为您的班级提供构造函数,这些构造函数初始化您的所有/部分本地成员并感到高兴.


C#但是,properties它允许我们写下这样的东西:

Class x = new Class { Field1 = new Field1 ...., Field2 = new Field2 }
Run Code Online (Sandbox Code Playgroud)

这允许对对象构造进行链接,并且正如我所假设的那样,可以删除许多构造函数,如果我们没有这些构造函数则需要这些构造函数properties.

将此与属性的默认值相结合,正如我所假设的,我们可以完全摆脱非专业的构造函数,它们实际上可以完成一些工作.

现在 - 是否可以删除冗余构造函数并允许通过字段初始化构建对象?

这种方法的缺点是什么?有人可能会给出关于结合字段和构造函数的使用的一般建议rules of thumb吗?

谢谢.

Ter*_*ver 16

我自己的经验法则很简单:如果需要某些东西来完全构造对象,它应该是一个ctor参数.

一个很好的例子是Stream辅助对象之一,如StreamReader或BinaryReader.如果没有关联的Stream对象,它们就无法运行,因此必须在构造函数中指定它们.


Zom*_*eep 6

在我看来,拥有你称之为冗余构造函数的东西并没有错.如果你想要定义一个构造函数就足够了,那可能是因为真正需要这样做.