我有这个示例代码:
DirectoryEntry _entry = new DirectoryEntry(
connectionString,
this.userPrinicipalName,
this.password,
AuthenticationTypes.SecureSocketsLayer & AuthenticationTypes.Encryption);
为什么我被允许在最后一个参数中制作放大器?我习惯于以前从未见过这种巫术的java,而且我是C#的新手 - 所以有人能告诉我它是什么以及我是如何被允许的吗?
提前致谢
答案 0 :(得分:2)
那些可能是整数,所以你只是在做它们值的二进制and (&)
。
如果您有1和2,则结果为0 01 & 10 = 00
。
答案 1 :(得分:1)
没有其他人指出这一点,但
AuthenticationTypes.SecureSocketsLayer & AuthenticationTypes.Encryption
有点奇怪,因为SecureSocketsLayer和Encryption都是2。
所以你不妨把一个或另一个,而不是两个......
如果 不同而你 希望将它们组合起来,你应该使用OR运算符,而不是AND运算符,&。
答案 2 :(得分:0)
AuthenticationTypes有一个FlagsAttribute。因此,您可以通过例如按位OR运算将不同的枚举值组合到复合枚举值中。
答案 3 :(得分:0)
在此页Authentication Types中。它说“这个枚举有一个FlagsAttribute属性,允许按位组合其成员值。”这意味着每个属性都有自己的位,因此这些位可以组合成多个属性。
答案 4 :(得分:0)
这很可能是一个包含[Flags]属性的枚举。此属性允许在枚举上使用按位运算符。