C# 在c中访问实例类的静态字段#

C# 在c中访问实例类的静态字段#,c#,C#,很抱歉问这么简单的问题,但我还没有通过搜索找到答案 那么,在c#中,是否可以通过类的实例访问类的字段(其值不需要更改)以及使用类的名称访问类的静态字段 例如,如果我有 public class Myclass { public int a = 0; } 我想在代码的其他地方,在另一个类中执行 Myclass instance = new Myclass(); int b = instance.a; 及 将int设为static或const没有帮助,有什么方法可以做到这一点吗?谢谢您的

很抱歉问这么简单的问题,但我还没有通过搜索找到答案

那么,在c#中,是否可以通过类的实例访问类的字段(其值不需要更改)以及使用类的名称访问类的静态字段

例如,如果我有

public class Myclass
{
    public int a = 0;
}
我想在代码的其他地方,在另一个类中执行

Myclass instance = new Myclass();
int b = instance.a;


将int设为static或const没有帮助,有什么方法可以做到这一点吗?谢谢您的回答。

如果
MyClass
是一个单例,那么是的,您可以这样做,但是在您的场景中,它似乎是一个否定的,因为您正在其他地方实例化它。看,如果
MyClass
是单身,你可以这样做:

public class MyClass
{
    private static MyClass _instance = new MyClass();

    public static MyClass Instance { get { return _instance; } }

    public int A { get; set; }
    public static int a { get { return _instance.A; } }

    private MyClass() { }
}

但是正如你所看到的,它确实是非常粗糙的。你在这里真的混合了OO概念。访问
静态
值-
MyClass.a
-和实例值之间有着明显的区别。只需创建实例即可。

这是不可能的。如果没有该类型的实例,则无法访问实例字段;如果无法通过C#中的该类型的实例访问静态字段,则需要通过该类型本身来访问它。

据我所知,这是不可能的。您可能需要更改实施方式。

不可能这样做,因为:

(1) 该语言阻止您通过实例引用访问静态字段,以及


(2) 不能有两个同名字段。(因此,静态字段和非静态字段不能同名。)

这可能不是一个好主意,但仍然可以这样做

class Class1
{
    public static int staticBlah = 0;

    public int blah { 
        get{return Class1.staticBlah;} 
        set{Class1.staticBlah = value;} 
    }


}

当然,您使用的不是完全相同的名称,而是访问相同的变量。

那么,您是在尝试静态访问实例字段,在这种情况下,您想要哪些实例值,还是希望通过实例访问静态字段,在这种情况下,为什么需要这样做,而不是通过类直接访问它?预处理器指令如何?如果需要,它们不能被访问吗?我想使用实例访问静态字段。这是因为我有大约15个类,它们具有相同类型的静态字段,我希望通过以相同的方式处理所有类来简化代码,甚至可以不通过创建var实例来复制不同类的代码
class Class1
{
    public static int staticBlah = 0;

    public int blah { 
        get{return Class1.staticBlah;} 
        set{Class1.staticBlah = value;} 
    }


}