< <在这段代码中做了什么?“<<”在C#中代表什么?
[Serializable]
[Flags]
public enum SiteRoles
{
User = 1 << 0,
Admin = 1 << 1,
Helpdesk = 1 << 2
}
< <在这段代码中做了什么?“<<”在C#中代表什么?
[Serializable]
[Flags]
public enum SiteRoles
{
User = 1 << 0,
Admin = 1 << 1,
Helpdesk = 1 << 2
}
这意味着位位移左侧,所以:
int i = 1 << 2;
// 0000 0001 (1)
// shifted left twice
// 0000 0100 (4)
左位位移类似于乘以2,和右位位移作为由两个分频。因为它们所传达的语义更好地与位掩码工作时,他们是(在x86上至少),比乘
+1,对于评论示例! – 2010-01-26 10:28:09
是否应该将移位,乘法或加法决定留给JITter? – Joey 2011-12-22 10:18:16
这是一个位转变更快
Bitshifts是有用的。
Admin = 1 << 1
表示一个人的二进制值左移一位。
结果是
Admin = 2
http://msdn.microsoft.com/en-us/library/6a71f45d%28VS.71%29.aspx – UpTheCreek 2010-01-26 09:10:07
这里:HTTP://计算器。 com/questions/2134204/multiple-ways-to-define-c-enums-with-flags-attribute/ – 2010-01-26 09:12:55