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

5 c# syntax

我实际上写了这个方法:

public static new iTextSharp.text.Color ITextFocusColor()
{
   return new iTextSharp.text.Color(234, 184, 24);
}
Run Code Online (Sandbox Code Playgroud)

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

在其他面向对象语言中这也是可能的吗?

Tho*_*que 8

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

有关详细信息,请参阅MSDN上的此页面.


Jef*_*tes 5

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

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

有关更多详细信息,请参阅C#规范(具体而言,请参见3.7.1.2隐藏继承).