抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

C#中? 、?? 、?. 、??= 的用法和说明(转载)

一、可空类型修饰符< ? >

引用类型能用空引用来表示一个表示一个不存在的值,但是值类型不能。例如:

string str = null;
int i = null;//编译报错

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

int i? //表示可空的整型
DateTime time? //表示可空的时间

二、空合并运算符< ?? >

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

var c = a??b //当a不为null时返回a,为null时返回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

版权声明:本文为CSDN博主「机械键盘侠」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/xuchen_wang/article/details/102850615

评论