C#语法中一个问号(?)和两个问号(??)的运算符是什么意思?

(1)、C#语法中一个个问号(?)的运算符是指:可以为 null 的类型。

MSDN上面的解释:

在处理数据库和其他包含不可赋值的元素的数据类型时,将 null 赋值给数值类型布尔型以及日期类型的功能特别有用。例如,数据库中的布尔型字段可以存储值 true 或 false,或者,该字段也可以未定义。

 (2)、C#语法中两个问号(??)的运算符是指null 合并运算符,合并运算符为类型转换定义了一个预设值,以防可空类型的值为Null。

MSDN上面的解释:

?? 运算符称为 null 合并运算符,用于定义可以为 null 值的类型和引用类型的默认值。如果此运算符的左操作数不为 null,则此运算符将返回左操作数(左边表达式);否则当左操作数为 null,返回右操作数(右边表达式)。 
 
 
C# Code:
 
 int? x = null;//定义可空类型变量
 int? y = x ?? 1000;//使用合并运算符,当变量x为null时,预设赋值1000
 
 Console.WriteLine(y.ToString()); //1000
        /// <summary>
        /// Gets a single instance
        /// </summary>
        public static Log LogInstance
        {
              get 
              { 
                   return _log ?? (_log = new Log()); //如果此运算符的左操作数不为 null,则此运算符将返回左操作数;否则返回右操作数。
               }
        }

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏python3

python 集合

说明: 拿list_1每一个元素去list_2中查找,如果有,直接忽略,否则就直接输出。

1332
来自专栏java技术学习之道

7大经典的排序算法总结实现

1426
来自专栏武军超python专栏

2018-7月19日系统模块字符串操作

每天遇到的新单词: recursion   n:递归 objece      n:对象 maximum     adj:最大值 exceed      ...

1203
来自专栏进击的君君的前端之路

正则表达式

1675
来自专栏柠檬先生

es6 数组扩展方法

1.扩展运算符     含义: 扩展运算符,三个点(...),将一个数组转为用逗号分隔的参数顺序。       例如:         console.log(...

2279
来自专栏郭耀华‘s Blog

Java.lang.Comparable接口和Java.util.Comparator接口的区别

Java的Comparator和Comparable当需要排序的集合或数组不是单纯的数字型时,通常可以使用Comparator或Comparable,以简单的方...

3168
来自专栏Python小屋

Python扩展库numpy中的布尔运算

首先解答上一篇文章Win10系统配置Python3.6+OpenGL环境详细步骤中的问题。该问题的答案为[2, 2],要点在于列表对象的方法index()默认是...

3299
来自专栏osc同步分享

java 特性拾遗

静态导入 一个类中的静态方法和静态变量可以直接导入使用,而不必导入整个类。使用 import static package com.yawn.java8; i...

3707
来自专栏python成长之路

函数的不定长参数

1392
来自专栏乐百川的学习频道

Golang学习笔记 函数

函数声明 函数使用func关键字声明,除了类型是后置的以外,剩下的地方基本和其他语言类似。特别地,和变量声明类似,如果函数参数的类型一样,同样可以只在最后添加类...

1938

扫码关注云+社区

领取腾讯云代金券