很抱歉提出这么简单的问题,但我还没有通过搜索找到答案。
因此,在c#中,是否有可能通过类的实例访问类的字段(其值不需要更改),并且访问类的静态字段使用类的名称?
例如,如果我有
public class Myclass
{
public int a = 0;
}
我想在代码的其他地方做另一个类
Myclass instance = new Myclass();
int b = instance.a;
和
int c = Myclass.a;
使int成为静态或const无助,有没有办法做到这一点?谢谢你的回答。
答案 0 :(得分:0)
如果MyClass
是Singleton然后是,那么你可以这样做,但是在你的场景中,它似乎是一个no,因为你在其他地方实例化它。看,如果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() { }
}
但你可以看到它真的 hacky。你真的在这里混合OO概念。访问static
值 - MyClass.a
- 与实例值之间存在明显差异。只需处理创建实例。
答案 1 :(得分:0)
这是不可能的。如果没有该类型的实例,则无法访问实例字段,并且无法通过C#中的类型实例访问静态字段,您需要通过类型本身访问它。
答案 2 :(得分:0)
据我所知,这是不可能的。可能是你需要改变实施方式。
答案 3 :(得分:0)
这是不可能的,因为:
(1)该语言阻止您通过实例引用和
访问静态字段(2)您不能有两个具有相同名称的字段。 (所以你不能有一个同名的静态和非静态字段。)
答案 4 :(得分:0)
可能不是一个好主意,但你仍然可以像这样做
class Class1
{
public static int staticBlah = 0;
public int blah {
get{return Class1.staticBlah;}
set{Class1.staticBlah = value;}
}
}
当然,您没有使用完全相同的名称,但您将访问相同的变量。