给定的
public class Original {
public static DoStuff() {
}
}
public class Derived : Original {
}
打电话时
Derived.DoStuff();
抛开需求的奇怪之处,是否有可能在
DoStuff()
中检测到它被调用的类?即是否有可能在
DoStuff()
的实现中区分 Original.DoStuff();
和 Derived.DoStuff();
之间的区别 最佳答案
不是在 C# 中,不是 - 编译后的 IL 直接引用 Original.DoStuff
。
(我刚刚验证了 VB 显然对静态调用做了同样的事情,而 IIRC 在通过“子”引用调用虚拟方法时,生成的代码中 VB 和 C# 之间存在差异。)
关于c# - 在派生类型上调用静态时是否可以检测类型,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9877676/