“如果要隐藏,请使用新关键字”警告

我的屏幕下方有一个警告:

警告1“ WindowsFormsApplication2.EventControlDataSet.Events”隐藏 继承成员 “ System.Component 模型。 MarshalByValueComponent. Events”。使用新的 keyword if hiding was intended. C:\Users\myComputer\Desktop\Event 控件 WindowsFormsApplication2 EventControlDataSet. Designer.cs 11232 eventControl

如果我双击它,它会显示:

public EventsDataTable Events {
get {
return this.tableEvents;
}

有人能告诉我怎么处理掉这个吗?

134642 次浏览

您的类有一个基类,并且这个基类还有一个名为 Events 的属性(它不是虚拟的或抽象的) ,该属性正被您的类重写。如果您打算覆盖它,请将“ new”关键字放在 public 修饰符之后。脑电图。

public new EventsDataTable Events
{
..
}

如果您不希望重写它,请将属性的名称更改为其他名称。

@ wdavo 是正确的,函数也是如此。

如果你覆盖一个基函数,比如 Update,那么在你的子类中你需要:

new void Update()
{
//do stufff
}

如果在函数声明的开头没有 new,那么就会出现警告标志。

在下面的代码中,Class A实现接口 IShow并实现其方法 ShowDataClass B继承 Class A。为了在 Class B中使用 ShowData方法,我们必须在 ShowData方法中使用关键字 new来隐藏基类 Class A方法,并使用 IShow0关键字来扩展该方法。

interface IShow
{
protected void ShowData();
}


class A : IShow
{
protected void ShowData()
{
Console.WriteLine("This is Class A");
}
}


class B : A
{
protected new void ShowData()
{
Console.WriteLine("This is Class B");
}
}

The parent function needs the virtual keyword, and the child function needs the override keyword in front of the function definition.

这个警告还会在以下情况下触发: 在 <Xaml> < br > 中,x:Name="Name1"Text="{Binding Name1}" 相同的属性名称位于同一元素中,当绑定过程变得更加复杂时,这可能会在某个点引起严重的冲突。