2011-08-31 79 views
2

從下面的代碼我想知道 MyMethod2()和MyMethod3()之間有什麼區別。 爲什麼.net提供的不提供編譯錯誤,因爲沒有提到新的關鍵字或換句話說,爲什麼.net提供了新的關鍵字,如果兩個實現都是相同的。C#中新修飾符的真正意義是什麼

public class MyBase 
{ 
    public virtual void MyMethod2() 
    { 
     //do something 
    } 
    public virtual void MyMethod3() 
    { 
     //do something 
    } 
} 

public class MyDerived :MyBase 
{ 
    public void MyMethod2() 
    { 
     base.MyMethod2(); 
    } 
    public new void MyMethod3() 
    { 
     base.MyMethod3(); 
    } 
} 


    static void Main(string[] args) 
    { 

     MyBase myClass = new MyDerived(); 
     myClass.MyMethod2(); //calls base class 
     myClass.MyMethod3(); //calls base class 
    } 
+0

嘗試使用非虛擬方法 - 這就是技巧開始的地方。 – 2011-08-31 23:06:55

+0

此處'new'的_only_效果是爲了抑制隱藏警告。 –

回答

1

它不會給你一個編譯錯誤,但它會給你一個警告,並且表現得好像你使用了新的關鍵字。

相關問題