Ron*_*erg 3 c# algorithm dictionary
我有六个相互独立的布尔标志,因此有64种可能的组合.这些标志应该确定某些字符串的值.该字符串可以有七个不同的值.我认为将它作为一个大的if语句实现是一个坏主意所以我想创建一个真值表,其中每个组合确定一个特定的结果:
Key Value
0,0,0,0,0,0 -> "A"
0,0,0,0,0,1 -> "A"
0,0,0,0,1,0 -> "B"
0,0,0,0,1,1 -> "C"
0,0,0,1,0,0 -> "A"
...
Run Code Online (Sandbox Code Playgroud)
这看起来非常像字典,但最好的关键实现是什么(在C#中)?最小的可能键是byte我将选项掩盖到的.但是,这不会提高我的代码的可读性.
还有其他解决方案吗?
您可以使用FlagsAttribute将6个bool选项表示为枚举,并依赖于枚举名称的可读性.
编辑,例如:
[Flags]
enum MyFlagSet : byte
{
NoFlags = 0,
Flag1 = 1 << 0,
Flag2 = 1 << 1,
Flag3 = 1 << 2,
Flag4 = 1 << 3,
Flag5 = 1 << 4,
Flag6 = 1 << 5
};
Dictionary MyDictionary = new Dictionary<MyFlagSet, string>()
{
{MyFlagSet.NoFlags, "Q"},
{MyFlagSet.Flag1 | MyFlagSet.Flag2, "A"},
{MyFlagSet.Flag3 | MyFlagSet.Flag5 | MyFlagSet.Flag6, "B"}
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
997 次 |
| 最近记录: |