"Use the new keyword if hiding was intended"警告



我在屏幕底部有一个警告:

警告 1 "WindowsFormsApplication2.EventControlDataSet.Events" 隐藏 继承成员 'System.ComponentModel.MarshalByValueComponent.Events'.使用新的 关键字(如果打算隐藏)。 C:\用户\我的计算机\桌面\事件 Control\WindowsFormsApplication2\EventControlDataSet.Designer.cs 112 32 eventControl

如果我双击它,它会得到:

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

谁能告诉我如何摆脱这个?

你的类有一个基类,这个基类也有一个名为 Events 的属性(不是虚拟的或抽象的),它被你的类重写。如果您打算覆盖它,请将"new"关键字放在公共修饰符之后。例如

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基类并使用override关键字来扩展方法。

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");
    }
}

父函数需要 virtual 关键字,子函数需要在函数定义前面使用 override 关键字。

当您

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

相关内容

最新更新