理解方法签名中的“new”关键字
在代码重构过程中,开发人员错误地在方法签名中引入了 new 关键字:
private static new MyObject CreateSomething() { return new MyObject{"Something New"}; }
这可以在 C# 中有效编译,引发关于以下含义的疑问方法签名中的 new 关键字。
“new”关键字表示什么?
正如 MSDN 文档中提到的,方法签名中的 new 关键字修改其引用行为:
示例:
考虑以下代码:
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中文网其他相关文章!