【发布时间】:2010-11-04 02:21:52
【问题描述】:
在执行重构时,我最终创建了一个如下例所示的方法。为简单起见,已更改数据类型。
我之前有一个这样的赋值语句:
MyObject myVar = new MyObject();
不小心被重构成了这样:
private static new MyObject CreateSomething()
{
return new MyObject{"Something New"};
}
这是我的剪切/粘贴错误的结果,但 private static new 中的 new 关键字是有效的并且可以编译。
问题:new 关键字在方法签名中的含义是什么?我认为这是 C# 3.0 中引入的东西?
这与override 有何不同?
【问题讨论】:
-
关于方法隐藏的可取性的一些说明:blogs.msdn.com/ericlippert/archive/2008/05/21/…
-
@Eric.. 很棒的帖子。我从来没有想过以这种方式隐藏方法,因为是的,对象是一回事,但我们现在将它呈现为其他东西,所以我们想要我们呈现它的事物的行为。聪明...
-
以后有一个重复的问题,我已经尝试过详细回答:Use new keyword in c#
-
使用
new作为方法(或其他类型成员)的修饰符不是“C# 3.0 中引入的东西”。从 C# 的第一个版本开始,它就一直存在。 -
在 SO 中这个问题有 4 个重复项。在我看来,这个会给你最好的理解:stackoverflow.com/questions/3117838/…。由@EricLippert 回答。