为了账号安全,请及时绑定邮箱和手机立即绑定

方法签名中的新关键字

方法签名中的新关键字

C#
守候你守候我 2019-10-09 15:17:25
在执行重构时,我最终创建了一个类似于以下示例的方法。为了简单起见,已更改数据类型。我以前有这样的作业说明:MyObject myVar = new MyObject();偶然地将其重构为:private static new MyObject CreateSomething(){  return new MyObject{"Something New"};}这是我剪切/粘贴错误的结果,但是new关键字in private static new有效且可以编译。问题:new关键字在方法签名中表示什么?我认为这是C#3.0中引入的?这override有何不同?
查看完整描述

3 回答

?
Qyouu

TA贡献1786条经验 获得超11个赞

正如其他人解释的那样,它用于隐藏现有方法。这对于重写在父类中不是虚拟的方法很有用。


请记住,创建“新”成员不是多态的。如果将对象强制转换为基本类型,则它将不使用派生类型的成员。


如果您有基类:


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.


查看完整回答
反对 回复 2019-10-09
  • 3 回答
  • 0 关注
  • 262 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信