我一直在尋找一段時間,因爲我自然健忘,我認爲這會很好地構建一些東西(抽象類,接口等?),這會迫使我實現某些代碼位我正在寫一個班。C#:使用抽象類強制構造函數簽名?
特別是,我想強制一個新的類總是有一個構造函數,它將一個單獨的參數類型化爲自身,以便更容易地重複對象。我在其他地方看到過有關這方面的文章/問題,但我不確定這個問題是否被問到(至少我能找到),或者我對其他文章/問題沒有足夠的理解來實現它。我提前道歉。
我不想在抽象類,接口等中有構造函數,實際上做任何事情。我只想定義派生類中構造函數簽名的要求。
我理想的課堂應該是這樣的:
public class GoodClass
{
public GoodClass(GoodClass goodClass)
{
// copy components of goodClass to this instance
}
}
於是,我第一次開始研究接口,也開始在抽象類閱讀起來。我在想像下面的代碼會起作用,但唉,我得到的錯誤。我試圖做甚至可能嗎?有沒有其他方法可以在我的顯示器上貼上便條,從而實現我的目標? :)
abstract class SelfConstructor
{
abstract public SelfConstructor(SelfConstructor) { }
}
class NewClass : SelfConstructor
{
//Required by SelfConstructor:
public NewClass(NewClass newClass)
{
// copy components of newClass to this instance
}
}
克隆方法很好,但實際上Microsoft建議不要實現ICloneable,主要是因爲如果克隆深度較淺或接口較淺時,接口不會處於任何狀態。 – 2014-09-29 22:11:16
@AdiLester這完全是真的,「克隆」可以做你想做的任何事情。如果你遵循語義,它基本上是一個複製操作的接口。 – BradleyDotNET 2014-09-29 22:12:35
...以及[MSDN](http://msdn.microsoft.com/en-us/library/system.icloneable%28v=vs.110%29.aspx)中的引用:「因爲Clone的調用者不能取決於執行可預測克隆操作的方法,我們建議ICloneable不能在公共API中實現。「 – 2014-09-29 22:13:55