'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
已被淘汰。但是,这取决于您希望 enum
的 private 程度。如果您愿意 internal
,那就行。
考虑以下因素
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
已被淘汰。但是,这取决于您希望 enum
的 private 程度。如果您愿意 internal
,那就行。