C# Tips: 静态方法可以被override/hide吗?

来源:互联网 发布:java布尔类型比较 编辑:程序博客网 时间:2024/06/05 14:03

这个话题说起来有些无聊,可能缺乏实际意义,仅从语言层面讨论而已。


静态方法并不受类的初始化的影响,它是针对类的,而不是针对类的实例的,所以它不可能被override。

如果有一个静态方法被标记为override,编译时将会出现以下形式的错误:

A static member '...' cannot be marked as override, virtual, or abstract.

但是静态方法可以被隐藏(hide)。

举例如下:


假设在基类中有一个精通方法定义如下:

public static bool ShouldDisplay(IMessageDataGroup messageDataGroup){    throw new NotImplementedException(        "Should not call the base class method. Should be hidden using the 'new' keyword in the inherited class.");}

在子类(继承基类的类)中,可以这样去Hide基类的静态方法:

public new static bool ShouldDisplay(IMessageDataGroup messageDataGroup){    if (messageDataGroup == null)    {        return false;    }    if (messageDataGroup.UIType == CommonEnumerator.PAEGroupUIType.Invisible)    {        return false;    }    return true;}


仅此而已。在实际应用中用处不大。


0 0
原创粉丝点击