2012-10-03 35 views
-5

我有一個2類一個是基類,第二個是派生類。 想要限制對象切片,我該如何使用C#.net?如何防止對象不應該分片

+2

你能給我們更多的信息嗎?例如用一些代碼示例來實現。 – Erwin

+3

您不必擔心在C#中切片。看到這個非常相似的[問題](http://stackoverflow.com/q/536267/944681) –

+0

你的意思是'密封'關鍵字,以防止派生類覆蓋一些方法或整個類? (請參閱[在MSDN上密封](http://msdn.microsoft.com/en-us/library/88c54tsw%28v=vs.100%29.aspx)) – Matten

回答

0

UPDATE:

如下所述我最初的想法被發現不屬實: 參見:C++ slicing in Java/C#


原來的答案:

如果我理解正確的,這是一個理論問題。 REDUCING切片可以通過不在派生類中定義新成員來完成。

將派生類的實例分配給基類引用類型時發生切片。 在這種情況下,系統不知道在哪裏分配新的數據類型,因爲它僅在派生類中定義,而不在基類中定義。

但是沒有辦法RESTRICT的是,這是假設的情況發生,並把它定義爲

被賦值的自然的和不可避免的結果從 子類對象

Object slicing - Wikipedia

但是,您可以聲明一個類作爲sealed以防止將限制對象切片的繼承,因爲它會阻止因爲(繼承),所以你不會有一個派生類來按值分配一個基礎引用。

+0

您提供的鏈接處理C++,而不是C#。這個問題問C# – Default

+0

真的,但對象切片的概念是理論和語言不可知的。每種可以提供價值型結構化存儲器流的語言,例如結構或類將處理稱爲對象切片的問題。 – Mortalus

+0

不是按照[這個答案](http://stackoverflow.com/a/536290/238902) – Default

相關問題