:this()作为构造函数

Aar*_*ark 10 c# constructor overloading constructor-chaining

我试图更好地理解一般实践...特别是在构造函数中派生this().我知道它的代码较少,但我认为它的可读性较差.这样做是常见/好的做法吗?或者编写第二个专门处理它的构造函数是否更好?

public SomeOtherStuff(string rabble) : this(rabble, "bloop") { }
Run Code Online (Sandbox Code Playgroud)

要么

Public SomeOtherStuff(string rabble)
{
    //set bloop
}
Run Code Online (Sandbox Code Playgroud)

任何投入将不胜感激

Tim*_*mwi 17

this()尽可能使用是一种好的做法.否则你将复制一些违反DRY(不要重复自己)原则的代码.重复自己的问题是每次需要进行更改时 - 即使只是对单行代码进行简单更改 - 您必须记住在多个位置进行相同的更改,并保持多个副本同步.

您应该只在需要时"复制"代码,因为它需要不同,因此它不再是重复的.这样,有一个副本就是向读者发出一条消息,即代码实际上是不同的,并且是有原因的.


Lan*_*dei 7

两个独立构造函数的问题在于,它们通常包含相同的代码,当一个构造函数被更改而另一个构造函数没有更改时,这可能导致后续重构的问题.所以你可以看到构造函数链接this()作为DRY原则的应用.