为什么base关键字不能用于静态方法?

A.T*_*.T. 1 c#

为什么我们不能使用base关键字在静态方法中使用基类方法?

两者都可以在编译时使用.

class A
{ 
    public virtual void Func(int a=4){
        Console.WriteLine(" A Class: "+a);
    }
}

class B : A
{
    public new void Func(int a = 12)
    {
        Console.WriteLine(" B Class: "+ a);
    }
}

class C : B
{
    public static void Func()
    {
        base.Func();  // why not ????
    }
}

public class Program
{
    public static void Main(string[] args)
    {
        B ob = new C();
        ob.Func();
        Console.ReadLine();
    }
}
Run Code Online (Sandbox Code Playgroud)

lah*_*rah 14

因为base关键字指的是当前类实例的基类.但是你没有静态方法中的当前实例 - 它们是静态的而不是实例.

B.Func() 如果Func()在B类中将方法设为静态,则可以调用.