我的屏幕底部有一个警告:
警告1'WindowsFormsApplication2.EventControlDataSet.Events'隐藏 继承的成员 'System.ComponentModel.MarshalByValueComponent.Events'。使用新的 关键字,如果隐藏意图。 C:\用户\我的电脑\桌面\事件 Control \ WindowsFormsApplication2 \ EventControlDataSet.Designer.cs 112 32 eventControl
如果我双击它,它会出现:
public EventsDataTable Events {
get {
return this.tableEvents;
}
谁能告诉我如何摆脱这个?
答案 0 :(得分:122)
您的类有一个基类,并且此基类还有一个名为Events的属性(非虚拟或抽象),您的类会覆盖它。如果您打算覆盖它,请在public修饰符后添加“new”关键字。 E.G。
public new EventsDataTable Events
{
..
}
如果您不想覆盖它,请将您的属性名称更改为其他名称。
答案 1 :(得分:13)
@wdavo是对的。功能也是如此。
如果覆盖基本功能,例如Update,那么在您的子类中,您需要:
new void Update()
{
//do stufff
}
如果在函数decleration开始时没有new,你将获得警告标志。
答案 2 :(得分:3)
在下面的代码中,Class A
实现了接口IShow
并实现了其方法ShowData
。 Class B
继承Class A
。要在ShowData
中使用Class B
方法,我们必须在new
方法中使用关键字ShowData
才能隐藏基类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");
}
}
答案 3 :(得分:0)
父函数需要virtual
关键字,子函数需要在函数定义前面的override
关键字。