apo*_*pse 0 c# methods new-operator
什么-new-关键字在这里意味着什么?
class X
{
new byte Method ()
{
return 5;
}
}
Run Code Online (Sandbox Code Playgroud)
我在stackoverflow上找到了一些,但我需要尽可能简单的答案(英语不好).
new 隐藏基类中的方法:
class Base
{
byte Method ()
{
return 4;
}
}
class X : Base
{
new byte Method ()
{
return 5;
}
}
X x = new X();
Base b = x;
Console.WriteLine(x.Method()); // Prints "5"
Console.WriteLine(b.Method()); // Prints "4"
Run Code Online (Sandbox Code Playgroud)
值得注意的是,如果该方法是虚拟的,并且您使用override而不是new,则行为是不同的:
class Base
{
virtual byte Method ()
{
return 4;
}
}
class X : Base
{
override byte Method ()
{
return 5;
}
}
X x = new X();
Base b = x;
Console.WriteLine(x.Method()); // Prints "5"
Console.WriteLine(b.Method()); // Prints "5"
Run Code Online (Sandbox Code Playgroud)