什么做的


What does | (pipe) mean in c#?

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

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

干杯


对于用[Flags]属性标记的枚举,竖线表示"and",即将给定值相加。

编辑:这是一个位"或"(虽然语义上是"and"),例如:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
[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;

它是一个位或但语义上你认为它是一个和!


它通常是位或运算符。在此上下文中,它用于设置了flags属性的枚举。


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

此文件系统权限是一个具有fullcontrol和modify的枚举,具有自己的数值。

所以如果fullcontrol=1,modify=2,

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

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

所以在这个例子中,位置1(本例中右边的数字)是fullcontrol,位置2是modify。该方法查看每个位置,并更改其行为。使用标志是一种传递行为的多个参数的方法,而不必为每个可能性(例如bool allowfullcontrol、bool allowmodify)等创建参数。

位运算符


它是一个二元运算符:

Binary | operators are predefined for
the integral types and bool. For
integral types, | computes the bitwise
OR of its operands. For bool operands,
| computes the logical OR of its
operands; that is, the result is false
if and only if both its operands are
false.


它是一个按位或由两个值组成的,大概它创建了一个同时设置了完全访问和修改权限的FileAccessRule。


它是一个布尔或。fullcontrol和modify表示掩码中的位。例如,0001和0101。如果你将这些通过管道结合,你会得到0101。