方法签名中的新关键字

在执行重构时,我最终创建了一个类似于以下示例的方法。为了简单起见,已更改数据类型。


我以前有这样的作业说明:


MyObject myVar = new MyObject();

偶然地将其重构为:


private static new MyObject CreateSomething()

{

  return new MyObject{"Something New"};

}

这是我剪切/粘贴错误的结果,但是new关键字in private static new有效且可以编译。


问题:new关键字在方法签名中表示什么?我认为这是C#3.0中引入的?


这override有何不同?


守候你守候我
浏览 266回答 3
3回答

Qyouu

正如其他人解释的那样,它用于隐藏现有方法。这对于重写在父类中不是虚拟的方法很有用。请记住,创建“新”成员不是多态的。如果将对象强制转换为基本类型,则它将不使用派生类型的成员。如果您有基类:public class BaseClass{    public void DoSomething() { }}然后是派生类:public class DerivedType : BaseClass{    public new void DoSomething() {}}如果声明一个类型DerivedType然后进行转换,则该方法DoSomething()不是多态的,它将调用基类的方法,而不是派生的方法。BaseClass t = new DerivedType();t.DoSomething();// Calls the "DoSomething()" method of the base class.
打开App,查看更多内容
随时随地看视频慕课网APP