只是想知道管道在这意味着什么?我以前从未见过它:
FileSystemAccessRule fullPermissions = new FileSystemAccessRule(
"Network Service",
FileSystemRights.FullControl | FileSystemRights.Modify,
AccessControlType.Allow);
干杯
答案 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)
二进制|运算符是预定义的 积分类型和布尔。对于 整数类型,|计算按位 或其操作数。对于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)等。
答案 5 :(得分:1)
这是一个布尔或。 FullControl和Modify表示掩码中的位。例如0001和0101.如果你要通过管道组合这些,你会得到0101。