首页 > 编程语言 >C# 特殊运算符。

C# 特殊运算符。

时间:2023-04-01 17:11:06浏览次数:31  
标签:操作数 特殊 17 C# 运算符 Person numbers null

一、可空类型修饰符 ?
引用类型能用null,但是值类型不能。例如:

string str = null;
int n = null;//报错

 

为了让值类型也能使用可空类型,就可以使用“?”来表示,语法为“T?”。例如:

int i?;//表示可控的类型
DataTime time?;//表示可空的时间

 

题外话:

T?是System.Nullable<T>的缩写,更便于读取。属于泛型的一种。

二、空合并运算符 ??
用于定义引用类型和可空类型的默认值。如果此运算符的左操作符不为Null,则此操作符返回左操作数,否则返回右操作数。

//当a不为空时返回a,为null时返回b
var c = a ?? b;

 

三、?.
不为null时执行后面的操作。例如:

//两段代码等效
Person.Name?.Person.Code;
Person.Name = Person == null ? null : Person.Code;

 

四、??=
C# 8.0 及更高版本中可使用空合并赋值运算符 ??=,该运算符仅在左侧操作数的求值结果为 null 时,才将其右侧操作数的值赋值给左操作数。 如果左操作数的计算结果为非 null,则 ??= 运算符不会计算其右操作数。

List<int> numbers = null;
int? i = null;

numbers??= new List<int>();
numbers.Add(i ??= 17);
numbers.Add(i ??= 20);

Console.WriteLine(string.Join("", numbers));//output:17 17
Console.WriteLine(i);//output 17

 

标签:操作数,特殊,17,C#,运算符,Person,numbers,null
From: https://www.cnblogs.com/jianxiaoxiu/p/17278926.html

相关文章

  • JS基础《JavaScript精粹》笔记摘录
    基础概念和语法基本类型、null、undefined、NaNJavaScript定义了一小批基本类型(primitivetype),它们包括字符串类型(string,单引号或双引号包起来)、数值类型(number,整数和小数都用这个类型)和布尔类型(boolean,值仅有true和false)。JavaScript使用两个特殊的值来表示不存在有意义的值—......
  • 记录--CSS 如何实现羽化效果?
    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助最近碰到这样一个问题,在一张封面上直接显示书名,可能会存在书名看不太清楚的情况(容易受到背景干扰),如下为了解决这个问题,设计师提了一个“究极”方案,将书名背后的图片模糊一下,这个在CSS中很好实现,仅需backdrop-fil......
  • cout<<endl输出时间过长问题
    做oj题目3333的时候发现了使用cout<<endl;爆出TLE错误的情况而使用printf("\n")、cout<<"\n"、cout<<'\n'以及puts("")都没有这种情况使用cout<<endl;的情况使用cout<<"\n";的情况使用printf("\n");的情况 使用puts(&q......
  • 面试笔记-Docker(Ⅰ)
    打包写好的项目基础配置安装指定版本的node.jsdockerpullnode:18.15运行刚才pull到的镜像,即创建一个containerdockerrun-itd--namenode-testnode:18.15-i:表示以交互模式运行容器(让容器的标准输入保持打开)-d:表示后台运行容器,并返回容器ID-t:为容器重新分配一个伪......
  • Leetcode(剑指offer专项训练)——DP专项(4)
    加减的目标值给定一个正整数数组nums和一个整数target。向数组中的每个整数前添加 '+'或'-',然后串联起所有整数,可以构造一个表达式:例如,nums=[2,1],可以在2之前添加'+',在1之前添加'-',然后串联起来得到表达式"+2-1"。返回可以通过上述方法构造的、运算......
  • VSCode升级语言插件后界面变回英文,如何切换回中文
    按快捷键Ctrl+Shift+P,输入ConfigureDisplayLanguage回车后选择简体中文重启VSCode后生效 参考:VScode:将VScode界面的显示语言改为简体中文,切换VScode界面的显示语言......
  • chrdev_open --- 通过文件路径,执行驱动设置的open()流程
    open一个字符设备的流程大概是:文件路径=>inode=>chrdev_open()=>(kobj_lookup=>)inode.i_cdev=>cdev.fops.my_chr_open()。所以只要通过VFS找到了inode,就可以找到chrdev_open(),这里我们就来关注一个chrdev_open()是怎么从内核的数据结构中找到我们的cdev并执行其中的my_c......
  • Ceres 自动求导解析-从原理到实践
    Ceres自动求导解析-从原理到实践目录Ceres自动求导解析-从原理到实践1.0前言2.0Ceres求导简介3.0Ceres自动求导原理3.1官方解释3.2自我理解4.0实践4.1Jet的实现4.2多项式函数自动求导4.3BA问题中的自动求导Reference1.0前言Ceres有一个自动求导功能,只要你按照C......
  • 卷积神经网络(Convolutional Neural Network)
    前置芝士:神经网络前言人脑视觉机理,是指视觉系统的信息处理在可视皮层是分级的,大脑的工作过程是一个不断迭代、不断抽象的过程。视网膜在得到原始信息后,首先经由区域V1初步处理得到边缘和方向特征信息,其次经由区域V2的进一步抽象得到轮廓和形状特征信息,如此迭代地经由更多更高层......
  • 运算符【算术运算符/赋值运算符/比较运算符/逻辑运算符】
     算术运算符   赋值运算符:  比较运算符  逻辑运算符:  运算符优先级:  其他运算符查看官方教程 来源:https://www.runoob.com/python/python-operators.html......