在@this question中,評論者@Jon Egerton提到MyClass
是VB.Net
中的關鍵字。從來沒有使用過它,我去了,發現它的documentation:C#中的MyClass相同
的MyClass的關鍵字的行爲就像一個對象變量指向一個類的當前實例最初實施。 MyClass與Me類似,但對它的所有方法調用都被視爲方法爲NotOverridable。
我可以看到,在某些特定情況下,這可能會有用。我想不出的是,你將如何在C#中獲得相同的行爲 - 也就是確保實際調用虛擬方法myMethod
對當前類中的myMethod
,而不是派生的myMethod
(又名in IL,調用call
而不是callvirt
)?
雖然我可能只是有一個完整的心理空白時刻。
當然,你可以用反射做到這一點,'DynamicMethod'和定製IL-代(使用'call'而不是'callvirt'你的建議),但你最終用了很多醜陋代碼的東西可能是一個壞主意。如果你出於某種原因真的需要這種行爲,那麼Heinzi的解決方法就是要走的路。 – LukeH