2

我有这个示例代码:

 DirectoryEntry _entry = new DirectoryEntry(
                    connectionString,
                    this.userPrinicipalName,
                    this.password,
                    AuthenticationTypes.SecureSocketsLayer & AuthenticationTypes.Encryption);

为什么我可以在最后一个参数中制作放大器?我习惯了 Java,我以前从未见过这种巫术,而且我是 C# 的新手——所以谁能告诉我它是什么以及我是如何被允许这样做的?

提前致谢

4

5 回答 5

2

这些可能是整数,所以你只是and (&)对它们的值进行二进制处理。

如果你有 1 和 2 结果将是 0 01 & 10 = 00

于 2012-06-29T07:30:55.220 回答
1

没有其他人指出这一点,但是

AuthenticationTypes.SecureSocketsLayer & AuthenticationTypes.Encryption

有点奇怪,因为 SecureSocketsLayer 和 Encryption 都是 2。

所以你不妨只放一个或另一个,而不是两个......

如果它们不同并且您确实想组合它们,则应使用 OR 运算符 |,而不是 AND 运算符 &。

于 2012-06-29T07:59:27.873 回答
0

AuthenticationTypes有一个FlagsAttribute。因此,您可以通过例如按位或运算将不同的枚举值组合成一个复合枚举值。

于 2012-06-29T07:31:24.590 回答
0

在此页面中身份验证类型。它说“这个枚举有一个 FlagsAttribute 属性,它允许按位组合其成员值。” 这意味着每个属性都有自己的位,因此位可以组合成多个属性。

于 2012-06-29T07:33:01.073 回答
0

这很可能是一个具有 [Flags] 属性的枚举。此属性允许在枚举上使用位运算符。

于 2012-06-29T07:33:40.837 回答