在C#中,在子類中可用new修飾一個方法,一般的資料對new 修飾符的功能說明,往往只是說明用來在子類中隱藏父類的相同方法(相同的方法名和相同的簽名),這樣,對於同一個方法而言,用子類的實例對象來調用時,執行的是子類中定義的新方法,實現了在子類中隱藏父類方法。但真的如果僅僅只是這樣嗎?在子類中使用New修飾符來修飾父類中的相同方法的作用,除了被隱藏了的父類方法之外,還可以通過類轉換來調用被隱藏了的方法,這樣,子類對象既也可以使用自身新定義的方法,也可以變相使用已被隱藏的父類的方法,提高了編程的靈活性,增強了類的功能。
請看以下代碼,類B是類A的一個子類,在其中用new 修飾符重新義了方法f,在main方法中用子類B實例化了一個對象b,並執行了子類B新建的f方法,並通過類型轉換調用了其父類A類的f方法。
class A
{
public int i;
public A()
{
i = 0;
}
public void f()
{
i ++;
}
}
class B : A
{
public new void f()
{
i--;
}
}
static void Main()
{
class B b=new B();
b.age=10;
b.f().;
((A)b).f();
Console.WriteLine(b.i);
}
此時顯示10.