访问静态 class 的非静态成员

Access nonstatic members of a static class

我有一个静态的class定义如下:

 public static class Classroom
  {
    public string Name;
    //other members
  }

如何在另一个 class 中访问变量 Name

因为它是静态的class我无法创建这样的实例

Classroom ClassroomObj = new Classroom();

由于 Name 不是静态的,我无法在不创建实例的情况下访问它。那我怎样才能访问变量?

不能在静态中声明实例成员class

您还必须创建变量 static

public static class Classroom
{
    public static string Name;
    //other members
}

原因是:您的静态 class 可以被视为使用其名称访问的单个实例,而不是使用 new 创建实例并使用变量名访问它。因此,此静态 class 中的任何 属性 也必须具有 static,以便再次使用 class 名称可用。

至于 static class 你可以' 创建它的实例:

  public static class MyClass {
    public static String SomeField;
    ....
  }

  // the class is static, no instances are allowed
  var o = new MyClass(); // <- Compile time error! 

但是,非静态(即实例)字段想要实例,其中无法提供 static class 的情况。这就是 非静态 字段在 static class 中不允许的原因。因此,您应该将 class 更改为 ordinal one:

  // No static
  public class Classroom
  {
    public string Name;
    ... 
  }

  ...

  Classroom room = new Classroom();
  room.Name = "123";

或者让 Name 也成为 static(但是我怀疑你想要那种解决方案:这意味着你只有 一个 Classroom):

  public static class Classroom
  {
    // note "static"
    public static string Name;
    ... 
  }

  ...

  Classroom.Name = "123";