什么做的(管)是指c#?

时间:2011-04-18 15:31:17

标签: c#

只是想知道管道在这意味着什么?我以前从未见过它:

FileSystemAccessRule fullPermissions = new FileSystemAccessRule(
             "Network Service",
             FileSystemRights.FullControl | FileSystemRights.Modify,
             AccessControlType.Allow);

干杯

6 个答案:

答案 0 :(得分:12)

对于标有[Flags]属性的枚举,竖线表示'和',即将给定的值加在一起。

编辑:这是一个按位'或'(虽然语义上和'),例如:

[Flags]
public enum Days
{
     Sunday    = 0x01,
     Monday    = 0x02,
     Tuesday   = 0x04,
     Wednesday = 0x08,
     Thursday  = 0x10,
     Friday    = 0x20,
     Saturday  =  0x40,
}

// equals = 2 + 4 + 8 + 16 + 32 = 62
Days weekdays = Days.Monday | Days.Tuesday | Days.Wednesday | Days.Thursday | Days.Friday;

这是一个按位 - 或者在语义上你认为它是一个AND!

答案 1 :(得分:10)

通常为bitwise or operator。在此上下文中,它在枚举时使用flags attribute设置。

答案 2 :(得分:3)

这是两个值的按位OR,可能是它创建了一个同时设置了FullAccess和Modify权限的FileAccessRule。

答案 3 :(得分:3)

这是binary operator

  

二进制|运算符是预定义的   积分类型和布尔。对于   整数类型,|计算按位   或其操作数。对于bool操作数,   |计算其逻辑OR   操作数;也就是说,结果是错误的   当且仅当它的两个操作数都是   假的。

答案 4 :(得分:3)

我假设你的意思是:FileSystemRights.FullControl | FileSystemRights.Modify

此FileSystemRights是一个包含FullControl和Modify的枚举,具有自己的数值。

因此,如果FullControl = 1且Modify = 2,

FileSystemRights.FullControl | FileSystemRights.Modify = 3.  
00000001 | 00000010 = 00000011.  

每个位都是该方法的“标志”。输入检查以查看设置了哪个“标志”以及要做什么。

所以在这个例子中,位置1(在这种情况下,数字一直是右边的数字)是FullControl,位置2是修改。该方法查看每个位置,并更改其行为。使用flags是一种传递行为的多个参数的方法,而无需为每个可能性创建一个参数(例如bool allowFullControl,bool allowModify)等。

Bitwise Operator

答案 5 :(得分:1)

这是一个布尔或。 FullControl和Modify表示掩码中的位。例如0001和0101.如果你要通过管道组合这些,你会得到0101。