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

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

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

干杯

它通常是按位或运算符 。 在此上下文中,它在带有flags属性集的枚举上使用。

对于标有[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!

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

这是一个二元运算符 :

二进制| 运算符是为整数类型和bool预定义的。 对于整数类型,| 计算其操作数的按位OR。 对于bool操作数,| 计算其操作数的逻辑OR; 也就是说,当且仅当两个操作数均为假时,结果为false。

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

这个FileSystemRights是一个包含FullControl和Modify的枚举,它们有自己的数值。

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

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

每个位都是该方法的“标志”。 输入检查以查看设置了哪个“标志”以及要执行的操作。

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

按位运算符

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