我想知道爲什麼C#不允許private virtual
功能和整個恰當地命名爲Why are private virtual methods illegal in C#?在C++和C#中,私有是否意味着不同的東西?
跑在接受的答案Eric Lippert(誰可能知道他在說什麼......)說:
如果您希望限制覆蓋非嵌套派生類中方法的能力,那麼您可以通過限制非嵌套類從基類派生的能力來實現;
在C++ private: virtual
是有道理的,因爲這意味着「我想從我這裏得到的超越此功能的功能類,但他們不應該是能夠直接稱之爲」,換句話說private
控制誰能夠調用一個函數並且不會影響誰可以覆蓋它。
我意識到,因爲只有派生類可以擺在首位,自重寫C#禁止private virtual
功能這個問題可能是毫無意義的,是有其中一個功能的保護水平可以影響誰可以替代它的其他情形(protected internal
也許)?