gpt4 book ai didi

c# - 为什么我们不能从实例对象访问静态成员?

转载 作者:太空宇宙 更新时间:2023-11-03 18:06:12 25 4
gpt4 key购买 nike

我知道我不能从实例对象调用静态方法

例如

public class A {
public static int a;
}

A b = new A();
b.a = 5; //which cannot compile

我想知道这背后的原因。

最佳答案

因为它没有意义,并且会导致误导性代码。阅读代码时,它给人的印象ab 所引用的 instance 的一部分。

例如,考虑:

ClassA a1 = new ClassA();
ClassA a2 = new ClassA();

a1.a = 10;
a2.a = 20;
Console.WriteLine(a1.a);

打印 20 而不是 10 会很奇怪。

这在 Java 中是允许的,我发现它会导致很多人对以下内容感到困惑:

Thread t = new Thread(...);
t.start();
t.sleep(1000);

... 这使得它看起来 就像您正在使新线程休眠,而实际上 Thread.sleep 是一种使现有线程休眠的静态方法。

我很高兴这在 C# 中是不允许的

关于c# - 为什么我们不能从实例对象访问静态成员?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29192859/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com