? ?? ??= ?. ?[] ?: :: => >> << ~ | < > || && ^ ! ++ -- % [] 什么东西

奇奇怪怪的运算符和表达式

我是看我师傅的项目中他用了一些奇奇怪怪的问号,我脑袋上也有了很多奇奇怪怪的问号。于是这篇博客就出来了。
首先c#版本需要是c# 8.0以上或者.NET Core 3.x

微软的版本控制文档>>>>版本控制
微软关于运算符的文档>>>>关于运算符和表达式的文档

配置&准备工作

目前是使用是VS2019,创建的是 .NET Core程序,版本是Core 3.1,至少是Core3.1才可以使用c# 8.0的语法,.NET Framework 的C# 语言版本的默认值 是c# 7.3 。
暂时不知道如何升级c# 语言版本
创建一个 .NET Core 控制台程序就行了。然后在 项目§>> 项目属性,看一下目标框架是不是符合的。
配置

? 的名字是:可为空的值类型

文档>>? 的文档
单 一个问号表示可空类型,
比如:你要给 int 一个空值,是会报错的,但是在int后面加上?就成了可空类型,他就可以为空。

他是会报错的
啪,错了就像上面这样,然是在后面加一个 ? 就不会报错了

不报错了但是这里需要注意,A的类型已经不是int 类型了,他成了 int?
然后多写几行看一下
空的哦
A是空的哦。

?? 的名字是:合并运算符

文档>>?? 的文档
解释不清楚,看代码
代码解释一下,在25行,如果a不为空则c=a,否则c=b
测试一下a不为空a不为空
a不为空,那么c=a,打印出a的值

然后如果是if-else
会不会好理解一些
会不会好理解一些?

??= 的名字是:空合并赋值运算符

文档>> ??= 的文档
?? 和 ??=的文档在一个网页上
代码如图
如图如果a为空那么c=b,否则c=a,我的理解是这样,感觉很 ?? 一样。

?. 的名字是:条件运算符

文档>>?. 的文档
在中间,可以通过目录找到他
?. 仅当操作数为非 null 时才用于执行成员或元素访问运算

代码如图

如图当a为空的时候并没有在第49行抛出a是空引用的异常,然后在第52行给a值之后,在53行将a换成了string然后打印了出来。

?[] 的名字是:null 条件运算符

文档>>?[]的文档
看了文档很久,也试了几下但是我是真菜。

  • null条件运算符

?:的名字是:条件运算符

文档>>?: 文档
条件运算符如果满足?左边的表达式,则返回冒号左边的值,否则返回冒号右边的值。

::的名字是:命名空间别名限定符

文档>>:: 的文档
再次不会

  • 命名空间别名限定符

=>的含义是:作为lambda运算符;作为成员名称的分隔符和表达式主体定义中的成员实现。

文档>>=> 的文档
拉姆达表达式的文档>>拉姆达表达式
表达式主体定义>>表达式主体定义

这个有两种形式,我一般使用的是lambda表达式。
有参数的表达式 和 没有参数的表达式两种。
lambda表达式的核心是委托,所以在使用之前要有一个委托(delegate)。

有参数的表达式

TODO:有参数的拉姆达表达式

没有参数的表达式

TODO:无参的拉姆达表达式

位运算符

>>的名字是:右移运算符

    //byte e = 0b_0100;//十进制的2
    //var g = f >> 3;
    //Console.WriteLine($"Shifted byte右移运算符:{ Convert.ToString(g, toBase: 10)}");

<<的名字是:左移运算符

| 的名字是:位或运算符

^异或运算符

二级制最高位为1的时候为负数

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值