C# 访问静态成员的静态成员

C# 访问静态成员的静态成员,c#,static,C#,Static,考虑以下几类 class A { public static int i; } class B { public static A a{get;}=new A(); // without new A(), B.A will be null } 现在, B.a给出了a的一个新实例,由于类a的变量“i”是静态的,我无法通过B.a访问“i”,即B.a.i是编译时错误 我明白如果我喜欢下面的内容 class B { static class A { static int i;

考虑以下几类

class A
{
public static int i;
}

class B
{
public static A a{get;}=new A();  // without new A(), B.A will be null
}
现在,

B.a给出了a的一个新实例,由于类a的变量“i”是静态的,我无法通过B.a访问“i”,即B.a.i是编译时错误

我明白如果我喜欢下面的内容

class B
{
  static class A
  {
    static int i;
   }
}
那我就可以做B.A.I

所以我的问题是如何访问类的静态成员的静态成员?有可能吗?有没有其他的模式我可以使用

还要注意,将类“A”设为静态,将类“B”设为静态

给出编译时错误“静态类型不能用作返回类型”

如何访问类的静态成员的静态成员


如果某个对象是一个类的成员——静态或非静态——这意味着它要么是一个值,要么是对某个对象实例的引用。因此,如果您知道您有一个类的实例,但该类本身有静态成员,则只需静态访问这些成员即可:

class MyClass
{
    public static string Value { get; }
}

string x = MyClass.Value;

您不需要实例化一个类来访问它的静态成员。 您可以尝试:

int value = A.i;
如果需要,也可以添加一个静态类:

public static class A
{
public static int i;
}
您可以在代码中的任何位置使用,如:

int value = A.i;

由于
i
A
的静态成员,您可以像

class B
{
  public static A a {get;} = new A();  
  public int ii{get;} = A.i; 
}  

如果你想得到i,只要做A.i.B在这里有什么关系?我知道。我只是想知道这是否可行。实际上,我正在尝试学习模式。我希望通过类B访问A.I。类B{int value=A.I;}好的技术。但是我关心的是,每次a中的属性增加时,B中也需要添加一行代码。如果我没有误解,您只需要这个类B{a.I++;},或者您可以在类B中创建一个方法来增加a:classe B{void increaseA{a.I++;}“如果您知道您有一个类的实例,但该类本身有静态成员,那么只需静态访问这些成员即可“我如何通过类的实例访问静态成员?你不需要…你只需要通过类本身访问它,就像我的示例一样。我理解这一点。我的问题是通过B访问i。很好的模式。我想不起来了。但是为什么不允许返回静态类型?@dividedbyzero,这与发布的答案中的相同。但是如果A是静态的,我们不能返回A。
class B
{
  public static A a {get;} = new A();  
  public int ii{get;} = A.i; 
}