在C#中包含私有枚举的类上“使用静态”

问题描述

请考虑以下内容

class Body
{
    [Flags]
    enum Organs { None = 0,Brain = 1,Heart = 2,Kidney = 4,Skin = 8 }

    Organs damagedOrgan = Organs.Heart;
    Organs currentOrgan = Organs.Kidney;
    Organs favoriteOrgan = Organs.Brain;
    Organs biggestOrgan = Organs.Skin;
    Organs allOrgans = Organs.Heart | Organs.Kidney | Organs.Brain | Organs.Skin;
}

在某些情况下,可以这样写更干净:

using static Human.Body.Organs;

class Body
{
    [Flags]
    enum Organs { None = 0,Skin = 8 }

    Organs damagedOrgan = Heart;
    Organs currentOrgan = Kidney;
    Organs favoriteOrgan = Brain;
    Organs biggestOrgan = Skin;
    Organs allOrgans = Heart | Kidney | Brain | Skin;

}

但是,这将产生以下错误

错误CS0122'Body.Organs'由于其保护级别而无法访问

有什么办法可以在包含(私有)枚举的类中的using static上使用enum块,以避免不得不过多地命名枚举?

解决方法

using static仅适用于可访问的成员-因此private enum不可用。但是,这取决于您希望enum成为私有的方式。如果您可以将其设为internal,则可以使用。

,

进行课堂学习并枚举public ..

我想,如果您想让枚举保持私有状态,则可能不必太在意它的名称(因为它的作用范围有限,没有人会看到它),因此可以将Organs缩短为O并省去{ {1}}