保护成员的意思是它们可以被子类或派生类访问。但是静态类的主要特征是:
只包含静态成员;
无法实例化;
是密封的。
这就是为什么静态类不能有保护成员的原因。
.NET 中的继承仅适用于实例。静态方法是在类型级别而不是实例级别上定义的。这就是为什么覆盖静态方法/属性/事件不起作用的原因...
静态方法只在内存中保留一次。没有为它们创建虚拟表等。
如果在 .NET 中调用实例方法,则始终将其提供给当前实例。这由 .NET 运行时隐藏,但确实发生了。每个实例方法都有一个指向运行该方法的对象的指针(引用)作为第一个参数。这对于静态方法(因为它们是在类型级别上定义的)不会发生。编译器应该如何决定选择要调用的方法?
(littleguru)