[英]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.