什么是新关键字在C#方法的返回类型中的效果?

时间:2011-02-16 16:24:02

标签: c# syntax

我实际上写了这个方法:

public static new iTextSharp.text.Color ITextFocusColor()
{
   return new iTextSharp.text.Color(234, 184, 24);
}

它的工作正常,但我很惊讶,它允许在方法的返回类型中使用new关键字。如果我把新的或没有新的,是否有任何影响/差异?或者新用的是什么?

在其他OO语言中这也是可能的吗?

4 个答案:

答案 0 :(得分:8)

它不会影响返回类型,它表示此方法从基类隐藏方法(而不是覆盖它)。例如,如果你需要更改在基类中声明的返回类型,它会很有用,但隐藏方法不会参与多态,即如果你通过一个派生类的实例调用ITextFocusColor基类的变量,将调用基本实现(不是使用new声明的那个)

有关详细信息,请参阅this page on MSDN

答案 1 :(得分:5)

new关键字指定您故意提供已由基类提供的方法或属性的新实现。它可以使基类成​​员隐藏在一个刻意的,自我记录的行为中。

如果您的基类没有该方法,那实际上并不重要。

有关详细信息,请参阅C# specification(特别是3.7.1.2隐藏继承)。

答案 2 :(得分:1)

这是new modifier。它隐藏了基类中的成员而不是覆盖。

答案 3 :(得分:1)

方法返回类型中的

new关键字隐藏了父方法。