首页 新闻 会员 周边

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

0
[已解决问题] 解决于 2019-11-07 17:46

我们先来看下面的代码

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。

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

龙葛格的主页 龙葛格 | 小虾三级 | 园豆:782
提问于:2019-11-07 17:09
< >
分享
最佳答案
0

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

奖励园豆:5
dudu | 高人七级 |园豆:30994 | 2019-11-07 17:15

原来如此,多谢dudu大神解惑

龙葛格 | 园豆:782 (小虾三级) | 2019-11-07 17:25
其他回答(2)
0

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

gw2010 | 园豆:1487 (小虾三级) | 2019-11-07 17:21
0

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

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

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

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

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

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

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

花飘水流兮 | 园豆:13560 (专家六级) | 2019-11-07 17:48

好的,受教了。谢谢你

支持(0) 反对(0) 龙葛格 | 园豆:782 (小虾三级) | 2019-11-07 17:50
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册