我"需要"一种更好的方法来从位掩码生成一个对象集合(一个ushort传递,在二进制形式上它被解释为一个掩码)
简单,非优雅的解决方案是:
public static Things[] Decode(ushort mask)
{
switch (mask)
{
case 1: // 1
return new[] { new Thing(0) };
case 2: //10
return new[] { new Thing(1) };
case 3: // 11
return new[] { new Thing(1), new Thing(0) };
case 4: // 100
return new[] { new Thing(2) };
case 5: // 101
return new[] { new Thing(2), new Thing(0) };
Run Code Online (Sandbox Code Playgroud)
// so on ......
请尝试以下方法
public static List<Thing> Decode(ushort mask) {
var list = new List<Thing>();
for ( var index = 0; index < 16; index++ ) {
var bit = 1 << index;
if ( 0 != (bit & mask) ) {
list.Add(new Thing(index));
}
}
return list;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
230 次 |
| 最近记录: |