簡體   English   中英

從靜態方法訪問非靜態枚舉值

[英]Accessing non-static enum values from static methods

public enum sEnum
{
    zero = 0, one = 1
}

public int x;

public static void a(sEnum s)
{
    x = 3;
    if (s == sEnum.one) ...
}

為什么可以在這里檢查枚舉的值,因為不使用static關鍵字? 這在語言規范中記錄在哪里?

枚舉只是命名值,因此您可以像在任何其他常量中一樣在靜態上下文中使用它們。

語言規范的第3.4.3節規定:

枚舉的成員是枚舉中聲明的常量

我認為規格中的14.3是您正在尋找的:

枚舉成員的命名和范圍與類中的字段完全類似。 枚舉成員的范圍是其包含枚舉類型的主體。 在該范圍內,枚舉成員可以通過其簡單名稱來引用。 在所有其他代碼中,枚舉成員的名稱必須使用其枚舉類型的名稱進行限定。 枚舉成員沒有任何已聲明的可訪問性 - 如果枚舉成員的包含枚舉類型可訪問,則可以訪問該成員。

暫無
暫無

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

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