Gjo*_*gji 1 c# enums bitwise-operators
我有这样的枚举
[Flags]
public enum Key
{
None = 0,
A = 1,
B = 2,
C = 4
}
Run Code Online (Sandbox Code Playgroud)
我有以下内容
Key k1 = Key.A | Key.B | Key.C;
Run Code Online (Sandbox Code Playgroud)
我想得到k1中具有最低值的键.我怎样才能做到这一点?
例:
Key k1 = Key.A | Key.B | Key.C; // I want a
Key k2 = Key.B | Key.C; // I want b
Key k3 = Key.A | Key.C; // I want a
Run Code Online (Sandbox Code Playgroud)
Mar*_*ers 12
你可以用一点技巧:
Key key = Key.B | Key.C;
Key lowest = (Key)((int)key & -(int)key);
Run Code Online (Sandbox Code Playgroud)
Keys key = Keys.b | Keys.c;
var lowest = Enum.GetValues(typeof(Keys))
.Cast<Keys>()
.OrderBy(x => x)
.FirstOrDefault(x => key.HasFlag(x));
Run Code Online (Sandbox Code Playgroud)
LINQ方法的效率和.NET 4.0版本略高一些.
| 归档时间: |
|
| 查看次数: |
1106 次 |
| 最近记录: |