首页 > 编程语言 >C#中?.、??、?:、及?等符号用途

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

时间:2023-03-24 14:15:20浏览次数:32  
标签:NULL 符号 C# 用途 运算符 int 可空 null

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{} 的简单形式。

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

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

标签:NULL,符号,C#,用途,运算符,int,可空,null
From: https://www.cnblogs.com/letmebaby/p/17251034.html

相关文章

  • Socket基础三
    1 流程  2 示例看下面一个服务器端的代码:namespaceMyScoketTest{publicpartialclassForm1:Form{publicForm1(){......
  • 系统化学习前端之JavaScript(01)
    前言JavaScript由三部分组成:ECMAScript,DOM,BOM。ECMAScript:JavaScript核心语法,本篇主要介绍ECMAScript,即JavaScript核心语法。DOM:文件对象模型,主要作用是通过JavaS......
  • C#:元组<Tuple>
    C#元组是一种数据结构,它可以将多个不同类型的值组合在一起。它类似于数组,但是元组可以包含不同类型的值,而数组只能包含相同类型的值。在C#中,元组是通过Tuple类来实现的。......
  • javascript 高级编程系列 - Set集合与Map集合
    ES6中新增的Set集合类型是一种有序列表,其中含有一些相互独立的非重复值,通过Set集合可以快速访问其中的数据,更有效地追踪各种离散值。1.创建Set集合并添加元素调用newS......
  • centos7安装tinyproxy
    一般需要先安装gccyuminstallgcc-y具体命令如下:gitclonehttps://github.com/tinyproxy/tinyproxy.gitcdtinyproxy./autogen.sh./configure--prefix=/usr/loca......
  • 初识别localStorage、IocalStorage的注意事项
    初识别localStoragelocalStorage是什么localStorage也是一种浏览器存储数据的方式(本地存储),它只是存储在本地,不会发送到服务器端单个域名下的localS......
  • Classic Shell 后继者之 Classic Start
    ClassicShell的开发者去年年底在官网发布声明表示,因缺乏足够的业余时间、Windows10更新过于频繁、微软对操作系统的改革等原因,该工具停止更新。开发者将工具在SourceFo......
  • 解决 SlickEdit Pro v22.0.0.9 在 WIN7 64位僵死/挂起的问题
    才10月18号发布的版本就有这种问题  不过好的是,官方给出了解决办法:*Backupyourvsapi.dll*Replaceitwiththis:http://support.slickedit.com/Outbound/2200/vs......
  • 初尝Microsoft 新一代团队协助服务-Loop
     在企业中,我们已经习惯于在Outlook软件中发送邮件,在Word软件中编写文档,在Excel中处理表格数据,在PowerPoint中发挥创意,在OneNote中进行笔记撰写,但是随着移动互联网的发展,这......
  • CCleaner v5.31.0.6105
    FreeEdition: http://download.piriform.com/ccsetup531.exePortable: http://www.piriform.com/ccleaner/download/portable/downloadfile ProfessionalEdition(Old......