在执行重构时,我最终创建了一个类似下面示例的方法.为简单起见,数据类型已更改.
我之前有一个这样的赋值语句:
MyObject myVar = new MyObject();
Run Code Online (Sandbox Code Playgroud)
它是偶然重构的:
private static new MyObject CreateSomething()
{
return new MyObject{"Something New"};
}
Run Code Online (Sandbox Code Playgroud)
这是我的剪切/粘贴错误的结果,但new关键字in private static new有效并编译.
问题:new关键字在方法签名中表示什么?我假设它是在C#3.0中引入的东西?
这有override什么不同?
C#语言规范说如果我继承了一个类,并且基类和派生类具有相同签名的相同命名成员,那么我必须使用该new关键字来隐藏基类成员(使用虚拟还有另一种方法)和覆盖基类和派生类成员中的关键字).
但实际上我发现如果派生类具有相同的命名成员,派生类会自动隐藏派生成员.那么同一个命名派生类成员中的新关键字的主要好处和问题是什么?