C# 中的 | 符号是什么意思?

我们先来看下面的代码

ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3 | SecurityProtocolType.Tls;
iTextSharp.text.Font normalRedFont = new Font(baseFont, 10, Font.NORMAL | Font.BOLD, BaseColor.RED);

看字面意思,| 似乎是或者的意思?

我记得老师教C++的时候说过|是按位或,&是按位与,那么在C#中|是什么意思呢?我自己做了个小实验

int sss = 1 | 2;
Console.WriteLine(sss);

sss = 15 | 0;
Console.WriteLine(sss);

sss = 15 | 1;
Console.WriteLine(sss);

Console.ReadKey();

就此看来,它的意思和C++中一致,都是按位或。

这样的话疑问就来了,最开始的代码中的写法意味着什么呢?第一句运算玩的结果可能既不是Ssl3也不是Tls。第二句运算完既不是NORMAL也不是BOLD。

这就是我疑惑的地方,但是,为什么好多人都要这么写呢?

<最佳答案>

| 是按位或,上面的代码中是用于 flag enum 类型,参考 C# 特性(Attribute)之Flag特性

其他回答(2)

1.

!,&&,|| 这个是逻辑的 非与或
~,&,| 这三个是按位 非与或
你按数字二进制位来操作,比如 1|2 就是 0001 或0010 结果为 0011,就是3

2.

这个符号是“或”的意思;

与、或、非、异或这些符号在标志属性变量中非常常用,相对应用来说也可以认为在底层中很常用;

为什么用这个——很快很方便很爽,楼上的都没说到重点,本来二进制很直观但编程中我们并没有二进制描述方式,一般使用10进制,而需要使用二进制这种表述情况下是用16进制来描述。因此你只需要记住1248(代表4个位)即可。

如窗口属性的叠加 假设 属性 A,对应枚举值a=0X01,b=0X02

那么wnd.A=a|b就完成了叠加。

同理:ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3 | SecurityProtocolType.Tls;

很多通讯也会大量使用,甚至我写权限也直接用位操作。位操作是计算机最最基本的指令,肯定也就是最短的指令之一,合适的场景使用不仅方便而且很快。

转载:C#中的|符号是什么意思?_已解决_博问_博客园

猜你喜欢

转载自blog.csdn.net/weixin_42565127/article/details/130872178
今日推荐