说我有:
class Test
{
public static int Hello = 5;
}
这显然有效:
int j = Test.Hello;
但是为什么这不起作用呢?
Test test = new Test();
int j = test.Hello;
实例不能有同名的成员,所以我不明白这对编译器来说怎么可能是模棱两可或无法解析的。
有人知道这是为什么吗?
编辑: 除了语言设计者为了可读性/清晰度/美学/等而选择它之外,还有其他技术原因为什么这应该是其他的吗?
最佳答案
另一个角度:
假设这是可能的。当通过 null
的实例变量访问静态成员时,您希望结果是什么?您想要空引用异常吗(但是为什么,因为不需要实例来获取静态成员)?或者您希望它工作(在这种情况下,您会遇到奇怪的情况,即对此实例变量的某些调用有效,但有些却无效)?两种方式都有问题。
关于c# - 为什么不能通过实例名称访问静态成员?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2477081/