【发布时间】:2012-03-01 08:41:02
【问题描述】:
我已经阅读了new关键字在方法签名中,并在this帖子中看到了下面的示例,但我仍然不明白为什么要写new关键字在方法签名中。如果我们省略它,它仍然会做同样的事情。它会编译。会有一个警告,但它会编译。
那么,写new在方法签名中只是为了可读性?
public class A
{
public virtual void One() { /* ... */ }
public void Two() { /* ... */ }
}
public class B : A
{
public override void One() { /* ... */ }
public new void Two() { /* ... */ }
}
B b = new B();
A a = b as A;
a.One(); // Calls implementation in B
a.Two(); // Calls implementation in A
b.One(); // Calls implementation in B
b.Two(); // Calls implementation in B
【问题讨论】:
-
new 用于定义 Class 的新实例。对于 C# StringBuilder strb 中的对象也是如此;如果你没有像我们说的那样“新建”它会出错所以你创建它的一个实例例如 strb = new StringBuilder(1000) 例如
-
还看看你的例子,死者从我看到的东西中得到的是 public override void One();公共新无效二();看看基本的 OOP 原则,网上也有很多教程
-
@DJKRAZE 对
new的使用与创建对象无关:msdn.microsoft.com/en-us/library/… -
theateist,我认为您所询问的
new关键字的混淆部分是由于缺乏声明的方法实现。我将编辑您的示例代码。 -
phoog,你是对的。我还编辑了我的帖子 - 添加了在方法签名中