在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.cnblogs.com/Joeris/articles/question-mark-csharp.html

C#中问号“?”的用法相关推荐

  1. ABB机器人画圆编程_ABB机器人使用rapid编程中问号的用法及画整圆指令

    4. 通常自定义带可选参数例行程序中,通过ABB机器人编程的Present函数来判断用户是否使用了该可选参数.也可使用如下例子.此处问号作条件判断,即若调用MoveCircle时,使用了可选参数WOb ...

  2. php三元运算符要多个赋值,php中三元运算符用法

    php中三元运算符用法如何算呢?就跟随百分网小编一起去了解下吧,想了解更多相关信息请持续关注我们应届毕业生考试网! 语法:条件 ? 结果1 : 结果2 说明:问号前面的位置是判断的条件,如果满足条件时 ...

  3. 逗号表达式 java_c和java中问号表达式与逗号表达式问题

    C语言中的问号表达式. --?--:-- 式A?B:C值为:若A为真,则B:若A为假,则C. 但有一点是值得注意的,那就是问号表达式的结合性,问号表达式是从右往左的运算方向 尤其是当问号表达式嵌套使用 ...

  4. mysql中change用法,mysql 中alter的用法以及一些步骤

    mysql 中alter的用法以及一些方法 在用到alter的时间,查到了这个文章,就copy下来了,详细进入下面链接: MySQL之alter语句用法总结 1:删除列 ALTER TABLE [表名 ...

  5. mysql中正则表达式的用法_Mysql中正则表达式Regexp常见用法

    Mysql中Regexp常见用法 模糊匹配,包含特定字符串 # 查找content字段中包含"车友俱乐部"的记录 select * from club_content where ...

  6. 【C++】C/C++ 中 static 的用法全局变量与局部变量

    C/C++ 中 static 的用法全局变量与局部变量 目录 1. 什么是static? 1.1 static 的引入 1.2 静态数据的存储 2. 在 C/C++ 中static的作用 2.1 总的 ...

  7. php foreach嵌套foreach,php中foreach怎么嵌套foreach PHP中foreach函数用法?

    foreach的使用方法小编不是很明确,分享达人指教一下.foreach (array_expressforeach($array as $key) { if(xxxx) { break; //bre ...

  8. python中str的index什么意思_python中index的用法是什么

    index() 一般用处是在序列中检索参数并返回第一次出现的索引,没找到就会报错,比如:>>> t=tuple('Allen') >>> t ('A', 'l', ...

  9. php foreach是什么,php中foreach的用法是什么

    php中foreach的用法是:[foreach ($array as $value) {要执行代码;}],每进行一次循环,当前数组元素的值就会被赋值给$value变量,在进行下一次循环时,将得到数组 ...

  10. java中的基本用法

    java中的基本用法 关键字:专门用途的字符串 所有java关键字都是小写英文 标识符 java常量 java变量 ■ 作用域:起作用的区域■ 使用前必须先声明,在赋值.使用变量名访问这块区域 jav ...

最新文章

  1. python数据可视化库 动态的_Python数据可视化:Pandas库,只要一行代码就能实现...
  2. jenkins安装环境搭建(3)
  3. protected访问权限_复习封装与访问控制
  4. Android studio实现底部导航,AndroidStudio制作底部导航栏以及用Fragment实现切换功能...
  5. final关键字_Java面试-谈谈对final关键字的理解
  6. pycharm 安装_pycharm安装
  7. 【POJ1083】 Moving Tables (并行的搬运)
  8. qt qthead里如何响应信号_Qt之QThread(深入理解)
  9. mysql三大范式_数据库的三大范式?
  10. 4. linux调用文件计算阶乘前5项和_嵌入式Linux系统编程——文件读写访问、属性、描述符、API
  11. conda环境内安装gcc4.8.5(无root权限)
  12. tcp协议和udp协议区别_TCP和UDP协议有什么区别?
  13. 超大数据量操作 java程序优化[转载]
  14. 极简fseek()函数讲解,一分钟掌握
  15. 计算机视觉教程3-1:全面详解图像边缘检测算法(附Python实战)
  16. 中国各省市及省会城市名称的由来
  17. 小米手机访问电脑共享文件_小米随身Wifi让手机共享电脑文件教程
  18. Linux进程管理软件supervisord使用心得
  19. jadx工具windows下载
  20. Android HTTP网络详解

热门文章

  1. 嵌入式开发—交叉编译OpenCV
  2. 如何进入Github【亲测有效】
  3. 齐桓公称霸天下的用人之道
  4. 机械革命笔记本开关键盘亮度
  5. (二)Chrome新标签页的设置
  6. 红米note3android5.0,小米红米note3MOSBeta5.0安卓8.1.0来去电归属农历等本地化增强适配...
  7. 1076: 三位数求解 C语言
  8. UCF,基于用户的协同过滤算法
  9. 办公小技巧:excel删除重复项
  10. 最基本的几种 CSS 文字滤镜效果 - 蓝色理想