问题描述
请考虑以下内容
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}}