访问静态类的非静态成员

时间:2015-09-23 10:15:46

标签: c# class static instance

我有一个静态类,定义如下:

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

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

因为它是一个静态类,所以无法创建像这样的实例

Classroom ClassroomObj = new Classroom();

由于Name不是静态的,因此我无法在不创建实例的情况下访问它。那么我该如何访问变量呢?

3 个答案:

答案 0 :(得分:4)

您还必须创建变量static

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

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

答案 1 :(得分:4)

对于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 类中不允许使用非静态字段的原因。所以你应该把你的班级改成序数一个:

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

  ...

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

或者Name也是static(我怀疑,但是,你想要那种解决方案:它意味着你只有一个 {{1 }}):

Classroom

答案 2 :(得分:0)

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