这个C#Bitwise-OR的结果是什么?

时间:2013-03-18 13:21:40

标签: c# sharepoint-2010 enums bitwise-or

我正在尝试检查c#中SharePoint用户的权限,但我遇到了以下似乎有用的代码:

isGranted = spweb.DoesUserHavePermissions(userlogin, SPBasePermissions.EmptyMask | SPBasePermissions.ViewPages);

第一个参数是用户检查权限。第二个参数是检查用户是否拥有的权限。

我的问题是,bitmask或者emptymask和viewpages权限之间的结果是什么?这实际上是在检查什么权限?

3 个答案:

答案 0 :(得分:6)

EmptyMask is defined as zero以来,结果与传递SPBasePermissions.ViewPages而没有EmptyMask的结果相同:

[Flags]
public enum SPBasePermissions
{
    EmptyMask =                 0×0000000000000000,
    ...
}

答案 1 :(得分:1)

它正在检查这两个权限。权限是按位标志。

我不知道实际值,但是说空面膜是:01000000,而ViewPage是00100000 - 那么OR'ing它们将是01100000 - 所以你把它们放在一起。

那么如果你想检查用户是否具有ViewPage权限,你可以获取OR值,并将它与ViewPage的值相对应,如果它是> 0然后你知道你有权限。

答案 2 :(得分:1)

枚举具有Flag属性,表示您可以使用按位运算符组合值。

实际上,将EmptyMask(0为0)与其他值相结合是没有意义的,因为0 | X总是等于X。只需使用其他值。