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

C#中问号“?”的用法

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

        在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#中问号“?”的用法” 的相关文章

AJAX网页如何实现SEO友好

AJAX网页如何实现SEO友好

        在WEB网页上应用AJAX技术可以提高用户体验,但是对于SEO却不够友好,因为搜索引擎不会执行JS,而AJAX网页的内容都是动态生成(即网页展示...

通用基础表逻辑设计(一)——配置、枚举和类别

通用基础表逻辑设计(一)——配置、枚举和类别

一、配置表        一个系统中往往有很多需要可自定义的参数,比如网站名称、联系地址等基础参数以及各种系统运行参数等等,这个时候就需要单独一个参数配置表来保...

云平台多租户系统的设计方案

云平台多租户系统的设计方案

        多租户(Multi Tenancy)是指在一个云平台上,多个不同的客户共用相同的平台和架构但又相互独立并对各自的用户提供服务。多租户相同有4个特...

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...

发表评论

访客

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