c# - "new"关键字在 C# 中有什么作用,为什么它在不使用时只是一个警告?

标签 c# new-operator warnings keyword

考虑以下代码:

public abstract class Test1
{
    public object Data { get; set; }
}

public abstract class Test2<T> : Test1
{
    public T Data { get; set; }
}

这将产生以下警告:

'Test2.Data' hides inherited member 'Test1.Data'. Use the new keyword if hiding was intended.

为什么这只是一个警告,添加“new”关键字会有什么影响?

根据我的测试,一旦添加了“new”关键字,我就找不到任何区别。

不要误会我的意思,我完全是为了直截了当,但我很好奇添加"new"的好处。

我唯一的想法是:

  • 提高人类可读性
  • 当编译器不用长时间解决不可避免的问题时,在运行时会节省一些时间

最佳答案

new 关键字的唯一作用是删除警告。在不使用 new 关键字时收到警告的目的是防止您在真正打算重写该方法时意外隐藏该方法。

关于c# - "new"关键字在 C# 中有什么作用,为什么它在不使用时只是一个警告?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1254943/

相关文章:

winapi - VirtualAlloc 和 HeapAlloc 有什么区别?

java - java 中 Stream 的类型安全原始类型

r - 如何控制knitr中的R警告到rmarkdown

c# - MonoDevelop 的 System.TypeLoadException

c# - 极长的 Rx 事件链

c# - DependencyProperty绑定(bind)问题

c++ - 使用友元函数重载新运算符

c++ - 删除指针的部分内存

c# - 我应该在 Page_Init 中以编程方式添加控制事件处理程序吗?

intellij-idea - 导入包含在该路径中的文件时,intellij 无法识别 babelrc 别名路径 - 未安装警告模块