当前位置:首页 > 技术积累 > 正文内容

C#中问号“?”的用法

竹林之风10年前 (2015-04-14)技术积累4225

        在C#中问号有单问号和双问号两种场景,其中单问号就是用于条件表达式的一个三元运算符;双问号有两个用法:可空类型修饰符和空合并运算符。

(1)条件表达式三元运算符:如x>y?a:b,即当x>y时表达式取值a,否则取值b;

c = x > y ? a : b;
//等价于
if (x > y) {
    c = a;
}
else {
    c = b;
}

(2)可空类型修饰符:int、bool等值类型不能赋值为null(空引用),为了使值类型也能赋值为空引用以表示不存在的值,引入了System.Nullable<T>(T为值类型),缩写即为T?,如int?表示System.Nullable<int>;

int? x = null;//可空类型默认值都是null,而值类型如int默认值为0、bool默认值为false等
bool? result = true;
/*
    当x为null且被引用时会引发“可为空的对象必须具有一个值”异常
    可空类型被引用或参与运算时,会调用Value属性,当可空类型未被赋值时即会引发此异常
*/
int y = x + 1;
x = 1;
y = x.Value;//将可空类型赋值给值类型时,使用Value属性

(3)空合并运算符:用于定义可空类型和引用类型的默认值,是右结合性运算符;

int y = x ?? 0;//当x为null时y取值0,否则取值x.Value,此运算符可简化可空类型null判断
int y = null == x ? 0 : x.Value;//与以上语句等价

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

版权声明:本文由久爱编程网发布,如需转载请注明出处。

本文链接:https://www.9icode.com/index.php/post/8.html

标签: C#基础
分享给朋友:

“C#中问号“?”的用法” 的相关文章

浅谈API接口

浅谈API接口

        API接口作为面向外部系统的门户,其背后是数据,用于隔离系统与数据,方便各异构系统整合与交互。不同系统之间的交互本质上是数据的交互,若直接访问各...

jQuery AJAX跨域在IE9及以下版本中失效问题

jQuery AJAX跨域在IE9及以下版本中失效问题

        使用jQuery AJAX在IE9及以下版本浏览器中提交HTTP跨域请求时,浏览器会报错且并不执行该操作,是因为IE9及以下版本默认不支持跨域请...

ASP.NET实现HTTP长轮询(三)——MVC

ASP.NET实现HTTP长轮询(三)——MVC

        本文主要描述如何在ASP.NET MVC中实现长轮询:(1)控制器继承AsyncController:using System.Threading; using ...

ASP.NET中报“无法在已发送HTTP标头之后进行重定向”异常问题解决

ASP.NET中报“无法在已发送HTTP标头之后进行重定向”异常问题解决

        ASP.NET中报“无法在已发送HTTP标头之后进行重定向”异常时,其中一个原因是:在已经重定向后又重定向。在ASP.NET中实现重定向有以下几...

ASP.NET中报“无法在已发送HTTP标头之后设置状态”异常问题解决

ASP.NET中报“无法在已发送HTTP标头之后设置状态”异常问题解决

        ASP.NET中报“无法在已发送HTTP标头之后设置状态”异常,是因为设置Response的StatusCode之前,程序已设置响应标头。可从以...

ASP.NET网站自定义错误处理及其它安全相关

ASP.NET网站自定义错误处理及其它安全相关

        ASP.NET网站在运行过程中总是有可能报错,例如404等HTTP错误、500等程序异常。在IIS托管并报错的情况下,网站的默认行为依次是:(1).NET运行时接收并处理的部分显示.N...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。