【发布时间】:2016-05-14 09:25:05
【问题描述】:
需要基于数组中 16 种不同布尔模式之一在 C# (.NET 4.6.1) 中进行分支(为了在此消息中的可读性,0==false 和 1==true):
0000
0010
0100
0110
0001
0011
0101
0111
1000
1010
1100
1110
1001
1011
1101
1111
此时不关心整体性能,对于 16 个案例中的每一个案例,有什么好的方法可以使分支易于阅读?有些中间有“00”的应该表现相同,有些则不然。
一个想法是将每个模式转换为一个字符串,然后执行一个 Switch 或 16 个“if”语句,这不是很好。每个模式都是 BitArray 的重要部分,被提取并转换为 bool 数组。
【问题讨论】:
-
也许我误解了你的问题,但为什么不将这些位转换为数字(例如
byte)并在该数字上执行switch? -
@Wai Ha Lee,如何将 4 个布尔值/位转换为一个字节?
-
嗯。假设您会得到很多答案,我将其写为临时评论。我很快就会写一个答案。
标签: c# switch-statement pattern-matching bitarray