最新要闻

广告

手机

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

家电

C#中?.、??、?:、及?等符号用途

来源:博客园

1.可空类型修饰符(?)

众所周知,在C#中引用类型可以使用一个null引用来表示一个不存在的值,比如 string str = null 是正确的;但是值类型却不能为空,比如 int k = null 那么编译器就会报错;为了让值类型也可以为空,就需要使用可空类型,即用可空类型修饰符 "?" 来表示,举例如:int? 表示可空的整形,DateTime? 表示可为空的时间。这样我们就可以写int? k = null 而不报错。

它的表现形式为 "T?" ,T? 其实是System.Nullable(泛型结构)的缩写形式,也就意味着当你用到T?时编译器编译时会把T?编译成System.Nullable的形式。例如:int?,编译后便是System.Nullable的形式。

2.NULL检查运算符(?.)

?. 可以作为是否为NULL的检查运算符。让我们举个例子:现在要获取某点的X值,那么我们就需要判断该点是否为空,代码可以写成:


(资料图片仅供参考)

int? firstX = null;if (points != null){    //获取该集合中首个元素  var first = points.FirstOrDefault();  if (first != null){firstX = first.X;}}

而现在我们可以简写这个代码,在C# 6.0中,引入了一个 ?. 的运算符,前面的代码可以改成如下形式:

int? firstX = points?.FirstOrDefault()?.X;

从这个例子中我们也可以看出它的基本用法:如果对象为NULL,则不进行后面的获取成员的运算,直接返回NULL。

3.空合并运算符(??)

用于定义可空类型和引用类型的默认值。如果此运算符的左操作数不为null,则此运算符将返回左操作数,否则返回右操作数。例如:a??b 当a为null时则返回b,a不为null时则返回a本身。

空合并运算符为右结合运算符,即操作时从右向左进行组合的。如,“a??b??c”的形式按“a??(b??c)”计算。

4.三元(运算符)表达式(?: )

例如:x == 0 ? y : z 表示如果表达式 x == 0 为true,则返回y;如果 x == 0 为false,则返回 z,是省略 if{} else{} 的简单形式。

本质:都使用了语法糖,在编译阶段编译器会把特殊符号先转译成原始状态再编译

学无止境,积少成多,与看到的你共勉。

关键词: