当前位置:首页 > C#学习 > 正文内容

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

小道7年前 (2018-08-31)C#学习5655

单问号(?)

单问号运算符可以表示:可为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

标签: 基础
分享给朋友:

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

类型转换Cast和Convert

类型转换Cast和Convert

把源类型赋值给目标类型,两个类型不一致的时候会发生类型转换。a=b,b是源,a是目标。隐式转换、显式转换。当目标类型一定能满足源类型转换过去后的要求的话就是隐式转换;如果当目标类型不一定能满足源类型转换过去后的要求的话就需要显式转换(程序员自己负责)。比如:把中国人转换为人是隐式转换,把人转换为中国...

输入Email地址,输出用户名和域名。

输入Email地址,输出用户名和域名。

输入Email地址,输出用户名和域名。        private void button1_Click(object sender, EventArgs e)//按钮...

文本框内字符滚动

文本框内字符滚动

页面上有一个文本框,文本框左侧和右侧各有一个按钮,点击左侧按钮文本框中的文字向左循环滚动一次,点击右侧按钮文本框中的文字向右循环滚动一次。        private void button1_Cl...

登录系统

登录系统

登录界面。登录错误三次退出程序,假设用户名、密码是admin、888888,不区分大小写。(易错点:局部变量与类变量)退出程序this.Close()或者Application.Exit()    public partial class&...