簡體   English   中英

靜態枚舉類成員

[英]Static enum class member

我可以將我的enum聲明為另一個類中的靜態成員嗎​​? 我只需要這個枚舉中的一個實例

public enum MyEnum 
{
    Add,
    Remove
}

public class MyClass 
{
    private static MyEnum _myEnum;


    public MyEnum Enum
    {
        get { return _myEnum; }
        set { _myEnum = value; }
    }
}

這樣可以嗎?

我強烈建議將屬性也設為static因為從非靜態屬性獲取/設置靜態字段毫無意義。

這不僅令人困惑。 我稱呼乞討的錯誤。

考慮一下:

var c1 = new MyClass { Enum = MyEnum.Add };
var c2 = new MyClass { Enum = MyEnum.Add };
c2.Enum = MyEnum.Remove;
Console.Write(c1.Enum.ToString());

您期望輸出什么? 現在兩個實例都具有MyEnum.Remove即使我只設置了一個。

如果在上面將其設置為靜態,則什至不會編譯,這是一件好事。

您需要通過類名使用該屬性,該名稱清楚地表明它是靜態屬性:

MyClass.Enum = MyEnum.Remove;

也將屬性定義為static

public static MyEnum Enum
{
    get { return _myEnum; }
    set { _myEnum = value; }
}

假設您只能通過創建的MyClass對象訪問它,這是完全好的。 如果希望能夠在沒有實例化對象的情況下設置或獲取Enum,則IE就像_myEnum一樣將Enum設為單例,則應將其聲明為靜態。

暫無
暫無

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

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