簡體   English   中英

VS2015關於虛擬方法和事件命名的警告(如果打算隱藏,請使用new關鍵字)

[英]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 ) { }
}

因為名稱相同。 由於您沒有添加任何覆蓋關鍵字,因此編譯器假定您不了解基類的屬性/方法,並向您發出警告。

  • 如果要覆蓋基類的屬性/方法,請使用override 為此,類型和名稱必須匹配。 可以從基類中調用此屬性/方法。
  • 如果要創建全新的屬性/方法,請使用new 不能從基類中調用此新屬性/方法。

在派生類中更改事件的名稱,不會違反規則。

通常,事件是通過以下方式實現的,都在同一類中:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM