当前位置:首页 > C#学习

单问号(?)和双问号(??)

小道8年前 (2018-08-31)C#学习6306

单问号(?)

单问号运算符可以表示:可为Null类型,C#2.0里面实现了Nullable数据类型

int i = null;//这句是错的。int不能定义为null。默认值为0

定义一个可为null类型的整型:

int? i = null;//这样是可以的。下面就是原格式。
Nullable<int> i = null;//上面是另一种书写格式。


双问号(??)

 ?? 运算符称为 null 合并运算符,用于定义可以为 null 值的类型和引用类型的默认值。如果此运算符的左操作数不为 null,则此运算符将返回左操作数;否则返回右操作数。

可以为 null 的类型可以包含值,或者可以是未定义的。?? 运算符定义当可以为 null 的类型分配给非可以为 null 的类型时返回的默认值。如果在尝试将可以为 null 值的类型分配给不可以为 null 值的类型时没有使用 ?? 运算符,则会生成编译时错误。如果使用强制转换,且当前还未定义可以为 null 值的类型,则会引发InvalidOperationException 异常。

//A.定义i为null,输出结果为0
int? i = null;//定义可为null的变量
Console.WriteLine(i ?? 0);//判断 i是否为null,如果为null则输出 ?? 后面的0.

//B.定义i为1,输出结果为1
int i = 1;//定义可为null的变量
Console.WriteLine(i ?? 0);//判断 i是否为null,如果为null则输出 ?? 后面的0.


扫描二维码推送至手机访问。

版权声明:本文由小道发布,如需转载请注明出处。

本文链接:https://www.daobk.com/post/95.html

标签: 基础
分享给朋友:

“单问号(?)和双问号(??)” 的相关文章

面向对象版聊天机器人

面向对象版聊天机器人

机器人有不同的名字、维护自己的FullLevel,可以SayHello(我叫***),可以喂食(Eat(int foodCount)),可以对它说话(Speak),对异常情况(错误的喂饭数字,喂的太多撑死了)进行处理,有两个机器人供选择,一开始通过1、2数字选择聊天机器人。  &…

WinForm文本框

WinForm文本框

文本框的几种模式:Multiline(多行)、PasswordChar(密码)将文本框的PasswordChar设为*就是密码框效果,将MultiLine属性设置为true并且将高度拉到合适的大小就是多行效果,textBox4.AppendText("hello"+"\…

for循环嵌套

for循环嵌套

使用for循环嵌套:        static void Main(string[] args)        &n…

C#的二维数组的声明和访问

C#的二维数组的声明和访问

C#的二维数组的声明和访问二维数组,就是以数组作为元素的数组。挺拗口的,看看它跟一维数组的对比:左边的 a 是一维数组,数组中包含 4 个 int 型变量:a[0]、a[1]、a[2]、a[3] 。右边的 b 是二维数组,数组中包含 2 个 int 型一维数组:b[0]、b[1] 。而 b[0] 和…