簡體   English   中英

訪問靜態類的非靜態成員

[英]Access nonstatic members of a static class

我有一個靜態類定義如下:

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

如何訪問另一個類中的變量Name

由於它是一個靜態類,因此無法創建這樣的實例

Classroom ClassroomObj = new Classroom();

由於Name不是靜態的,我無法在不創建實例的情況下訪問它。 那么如何訪問變量呢?

您還必須使變量static

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

原因是:您的靜態類可以被視為使用其名稱訪問的單個實例,而不是使用new創建實例並使用變量名稱訪問它。 因此,此靜態類中的任何屬性也必須具有static ,以便再次使用類名可以使用它。

至於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! 

但是,非靜態(即實例)字段需要實例,無論如何都無法提供靜態類 這就是靜態類中不允許使用非靜態字段的原因。 因此,您應該將類​​更改為序數類:

  // 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";

不能在靜態類中聲明實例成員

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM