这个话题说起来有些无聊,可能缺乏实际意义,仅从语言层面讨论而已。
静态方法并不受类的初始化的影响,它是针对类的,而不是针对类的实例的,所以它不可能被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;
}
仅此而已。在实际应用中用处不大。