c# - 隐藏(使用 "new"修饰符)接口(interface)方法声明的目的是什么?

标签 c# interface new-operator

可以将接口(interface)中的方法声明标记为“new”,但它是否具有任何“技术”意义,或者它只是一种明确声明声明不能覆盖先前声明的方式?

例如:

interface II1
{
    new void F();
}

interface II2 : II1
{
    new void F();
}

是有效的(C# 4.0 编译器不会报错)但似乎与 :

interface II1
{
    void F();
}

interface II2 : II1
{
    void F();
}

提前感谢您提供任何信息。

编辑:您知道隐藏在界面中会有用的场景吗?

编辑: 根据此链接:Is method hiding ever a good idea (感谢斯科特), 最常见的场景似乎是协变返回类型的仿真。

最佳答案

第二个示例发出以下编译器警告:

'II2.F()' hides inherited member 'II1.F()'. Use the new keyword if hiding was intended.

我会说使用 new 关键字的不同之处在于:显示意图。

关于c# - 隐藏(使用 "new"修饰符)接口(interface)方法声明的目的是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3476685/

相关文章:

c++ - 使用 'new' 在 C++ 中动态分配内存?

c# - E*Trade API 在获取访问 token 时经常返回 HTTP 401 Unauthorized,但并非总是如此

c# - 将 html 帮助程序迁移到 ASP.NET Core

c# - 如何在Asp.net core 1中创建请求进行测试

c# - 使用迁移删除/添加列的 "defaultvaluesql"

java - 如何在我的界面中为最终变量创建 Java 字段注释

javascript - JavaScript 中的运算符 "new"根据我想在几个 JavaScript 文件中使用的类

java - 执行 .class 文件的方法时如何断言安全?

java - 如何在接口(interface)实例中调用super方法?

c++ - new 运算符返回什么?