首页 >后端开发 >C++ >C# 方法签名中的'new”关键字有什么作用?

C# 方法签名中的'new”关键字有什么作用?

Mary-Kate Olsen
Mary-Kate Olsen原创
2025-01-02 18:54:38720浏览

What Does the `new` Keyword Do in C# Method Signatures?

理解方法签名中的“new”关键字

在代码重构过程中,开发人员错误地在方法签名中引入了 new 关键字:

private static new MyObject CreateSomething()
{
  return new MyObject{"Something New"};
}

这可以在 C# 中有效编译,引发关于以下含义的疑问方法签名中的 new 关键字。

“new”关键字表示什么?

正如 MSDN 文档中提到的,方法签名中的 new 关键字修改其引用行为:

  1. 隐藏继承的方法:在派生类中使用时类中,new 关键字可防止方法的继承实现被重用。相反,派生类中的方法被视为全新的方法。
  2. 重写非虚方法和静态方法:与 override 关键字只能重写虚方法不同,新方法关键字允许重写基础中的非虚拟方法甚至静态方法

示例:

考虑以下代码:

public class A
{
   public virtual void One();
   public static void Two();
}

public class B : A
{
   public new void One();
   public override void Two();
}

B b = new B();
A a = b as A;

a.One(); // Calls implementation in B
a.Two(); // Calls implementation in A
b.One(); // Calls implementation in B
b.Two(); // Calls implementation in B

在此示例中,B 类重新定义了 One方法(使用 new)和两种方法(使用 override)。通过对 One 使用 new,B 类隐藏了继承的实现并引入了自己的实现。然而,通过对 Two 使用 override,它会覆盖继承的虚拟方法。

因此,new 关键字提供了灵活性,允许在覆盖不适用的情况下覆盖或隐藏继承的方法,例如非虚拟和静态方法。

以上是C# 方法签名中的'new”关键字有什么作用?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn