在执行重构时,我最终创建了一个类似于以下示例的方法。为了简单起见,已更改数据类型。我以前有这样的作业说明: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.
- 3 回答
- 0 关注
- 284 浏览
添加回答
举报
0/150
提交
取消