关键字-new-在方法实现之前

apo*_*pse 0 c# methods new-operator

什么-new-关键字在这里意味着什么?

  class X
  {
        new byte Method ()
        {
              return 5;
        }
  }
Run Code Online (Sandbox Code Playgroud)

我在stackoverflow上找到了一些,但我需要尽可能简单的答案(英语不好).

pho*_*oog 6

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)