'Using static' 在 class 上包含 C# 中的私有枚举

'Using static' on a class contained private enum in 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, Brain = 1, Heart = 2, Kidney = 4, Skin = 8 }

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

}

然而,这将产生以下错误。

Error CS0122 'Body.Organs' is inaccessible due to its protection level

有什么方法可以在 class 包含的(私有)枚举中的 enum 上设置一个 using static 块,以避免过度命名枚举?

使你的 class 和枚举 public..

我想如果你想让你的枚举保持私有,你可能不会太在意它的名字(因为它的范围会受到限制,没有人会看到它)所以你可以将 Organs 缩短为 O 并免除using static

using static 仅适用于 可访问的成员 - 所以 private enum 已被淘汰。但是,这取决于您希望 enumprivate 程度。如果您愿意 internal,那就行。