[英]VS2015 warning about naming of virtual method and event (Use the new keyword if hiding was intended)
我有一些代碼,如下所示:
public class Child : Parent
{
public event Action<string> OnEventTriggered;
}
public class Parent
{
protected virtual void OnEventTriggered( double x ) { }
}
編譯器顯示警告消息:
'Child.OnEventTriggered'隱藏繼承的成員'Parent.OnEventTriggered(double)'。 如果要隱藏,請使用new關鍵字。
虛方法與事件共享相同的名稱。
虛方法的參數類型為double,Action為字符串類型。
為什么違反檢查規則?
感謝您提前答復。
附加方案:
如果將代碼更改為此,它不會顯示任何警告。
這些代碼之間有什么區別?
public class Child : Parent
{
public void OnEventTriggered( string x ) { }
}
public class Parent
{
protected virtual void OnEventTriggered( double x ) { }
}
因為名稱相同。 由於您沒有添加任何覆蓋或新關鍵字,因此編譯器假定您不了解基類的屬性/方法,並向您發出警告。
在派生類中更改事件的名稱,不會違反規則。
通常,事件是通過以下方式實現的,都在同一類中:
public class EventDemo {
public event EventHandler SomeEvent;
protected virtual void OnSomeEvent() {
var someEvent = SomeEvent;
if (someEvent != null) {
someEvent(this, EventArgs.Empty);
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.