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对象,它们就无法运行,因此必须在构造函数中指定它们.