新关键字如何用于隐藏方法?

Nee*_*ati 5 c#

我读过一篇关于这个new关键字的文章.它说它用于隐藏方法.这是他们给出的例子:

using System;

namespace ConsoleApplication3
{
    class SampleA
    {
        public void Show()
        {
            Console.WriteLine("Sample A Test Method");
        }
    }

    class SampleB:SampleA
    {
        public void Show()
        {
            Console.WriteLine("Sample B Test Method");
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            SampleA a = new SampleA();
            SampleB b = new SampleB();
            a.Show();
            b.Show();
            a = new SampleB();
            a.Show();
            Console.ReadLine();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

输出:

样品A测试方法

样品B测试方法

样品A测试方法

所以我的问题不是new用于实例化对象的关键字?它用于为新创建的对象分配内存?那么如何使用它来隐藏方法呢?上面的例子是正确的吗?

Den*_*s_E 6

new用于3种不同的东西.你可以说有3个不同的关键字具有相同的名称.

  1. 它是一个运算符,用于调用构造函数.例:new object();
  2. 它是一个修饰符,用于隐藏基类成员的继承成员.例:

    class Base {
        public void MyMethod() {
            //Do stuff
        }
    }
    
    class Derived : Base {
        public new void MyMethod() {
            //Do other stuff
        }
    }
    
    Run Code Online (Sandbox Code Playgroud)
  3. 它是泛型类型约束,用于指示泛型类型参数具有无参数构造函数.例:

    class MyGenericClass<T> : where T : new() { ... }
    
    Run Code Online (Sandbox Code Playgroud)

来源:新的