C# null 合并运算符??(双问号)使用示例

??是一个二元运算符,如果左操作数非空,则返回左操作数,否则返回右操作数,所以,在一些特定的场合可以用它来代替?:运算符,简化代码书写。

例1:

代码如下:

int length = Request.QueryString["l"] != null ? int.Parse(Request.QueryString["l"]) : 0;

使用??运算符:

代码如下:

int length = int.Parse(Request.QueryString["l"] ?? "0");

例2:

代码如下:

int? m = null;
int n = m == null ? (int)m : 0;

使用??运算符:

代码如下:

int? m = null;
int n = m ?? 0;

参考资料:

[1].?? 运算符(C# 参考):http://msdn.microsoft.com/zh-cn/library/ms173224(v=vs.80).aspx

(0)

相关推荐

  • asp.net 关于==?:和if()else()条件判断等效例子

    昨天经高手指导 测试使用了 ==?: 和 if()else() xzyHe 为 DropDownlist 值,如果为空取值为0 复制代码 代码如下: if (xzyHe ==""){int xzyHe==0;else{int xzyHe = DropDownlist.Text.Trim();} 另外一种写法: 复制代码 代码如下: int xzyHe = ConVert.ToInt32(xzyHe == ""?0:int.Parse(DropDownlist.Tex

  • C#中的问号(?号)用法小结

    1. 可空类型修饰符(?): 引用类型可以使用空引用表示一个不存在的值,而值类型通常不能表示为空. 例如:     string str=null;是正确的.     int i=null:编译器将报错.     为了使值类型也可为空,可空类型出现了,可空类型使用可空类型修饰符?来表示,表现形式为T?. 例:int?表示是可空的整形,DateTime?表示为可空的时间. T?其实是System.Nullable<T>(泛型结构)的缩写形式,也就意味着当你用到T?时编译器在编译时会把T?编译成S

  • c# 操作符?? null coalescing operator

    我们可以看下下面的这几个示例来看看这个操作符的使用方法: 复制代码 代码如下: string message = "Hello World"; string result = message ?? "null"; //这里的result的内容是 Hello World 再看下面的这个例子子: 复制代码 代码如下: string message = null; string result = message ?? "It's null"; //在这

  • C# 运算符 ?、??、?: 各种问号的用法和说明

    1.可空类型修饰符(?):引用类型可以使用空引用表示一个不存在的值,而值类型通常不能表示为空,例如:string str=null;是正确的.int i=null:编译器将报错.为了使值类型也可为空,可空类型出现了,可空类型使用可空类型修饰符?来表示,表现形式为T?.例:int?表示是可空的整形,DateTime?表示为可空的时间.T?其实是System.Nullable<T>(泛型结构)的缩写形式,也就意味着当你用到T?时编译器在编译时会把T?编译成System.Nullable<T&

  • c# 空合并运算符“??”的使用详解

    在c#中"??"为空合并运算符,用于定义可空类型和引用类型的默认值. (1)如果此运算符的左操作数不为 null,则此运算符将返回左操作数:否则返回右操作数.例:a??b,当a为null时则返回b,a不为空时返回a本身. (2)右操作数类型必须与左操作数类型相同,或者可以隐式的转换为左操作数类型.否则编译错误. (3)空合并运算符为右结合运算符,即操作时从右向左进行组合的.例:"a??b??c"的形式按"a??(b??c)"计算.

  • C# 中的??操作符浅谈

    复制代码 代码如下: object nullObj = null; object obj = new Object(); return nullObj ?? obj; // returns obj 主要用作将一个可空类型赋值给不可空类型的简便语法 复制代码 代码如下: int? i = null;int j = i ?? 0; // Unless i is null, initialize j to i. Else (if i is null), initialize j to 0.

  • C# null 合并运算符??(双问号)使用示例

    ??是一个二元运算符,如果左操作数非空,则返回左操作数,否则返回右操作数,所以,在一些特定的场合可以用它来代替?:运算符,简化代码书写. 例1: 复制代码 代码如下: int length = Request.QueryString["l"] != null ? int.Parse(Request.QueryString["l"]) : 0; 使用??运算符: 复制代码 代码如下: int length = int.Parse(Request.QueryString

  • 详解PHP中的null合并运算符

    null合并运算符是一个好东西,有了它我们就能很方便的获取一个参数,并能在其为空的情况下提供一个默认值.比如在js中可以用||来搞: function setSomething(a){ a = a || 'some-default-value'; // ... } 而在PHP中,可惜PHP的||总是返回true或false,无法这样来搞.  PHP7才正式加入了??这个运算符: // 获取user参数的值(如果为空,则用'nobody') $username = $_GET['user'] ??

  • C#中单问号(?)和双问号(??)的用法整理

    一.可空类型修饰符(?) C#2.0里面实现了Nullable数据类型 //A.比如下面一句,直接定义int为null是错误的,错误提示为无法将null转化成int,因为后者是不可以为null的值类型. private int getNum = null; //B.如果修改为下面的写法就可以初始指为null,在特定情况下?等同于基础类型为Nullable. private int? getNum = null; private Nullable<int> getNumNull = null;

  • python中前缀运算符 *和 **的用法示例详解

    这篇主要探讨 ** 和 * 前缀运算符,**在变量之前使用的*and **运算符. 一个星(*):表示接收的参数作为元组来处理 两个星(**):表示接收的参数作为字典来处理 简单示例: >>> numbers = [2, 1, 3, 4, 7] >>> more_numbers = [*numbers, 11, 18] >>> print(*more_numbers, sep=', ') 2, 1, 3, 4, 7, 11, 18 用途: 使用 * 和

  • ES2020系列之空值合并运算符 '??'

    空值合并运算符 ?? 提供了一种简短的语法,用来获取列表中第一个"已定义"的变量(译注:即值不是 null 或 undefined 的变量). a ?? b 的结果是: a,如果 a 不是 null 或 undefined, b,其他情况. 所以,x = a ?? b 是下面这个表达式的简写: x = (a !== null && a !== undefined) ? a : b; 下面是一个更长一点的例子. 假设,我们有一个用户,变量 firstName.lastNa

  • Java实现合并多个PDF的示例代码

    这里合并用到了一个itext的包.使用maven直接导入依赖即可. <dependency> <groupId>com.lowagie</groupId> <artifactId>itext</artifactId> <version>2.1.7</version> </dependency> 这个是我写的一个utl工具类,里面还写了一个main方法,如果你有两个pdf,可以直接用main方法跑一下. impo

  • Java实现合并word文档的示例代码

    目录 说明 实现 1.首先定义好主文档 2.定义需要追加的文档 3. 代码实现 4. 成果展示 说明 在做项目中,遇到了一种情况,需要将一个小word文档的内容插入到一个大word(主文档)中. 实现 1.首先定义好主文档 在主文档需要插入小word文档的位置上添加一个书签,这个书签名字要记住,后面要用. 2.定义需要追加的文档 3. 代码实现 package com.test.word; import com.aspose.words.Body; import com.aspose.words

  • Java实现双链表的示例代码

    目录 一.双向链表是什么 二.具体方法实现 定义结点 下标访问异常 获取链表长度 打印链表 清空链表 头插法 尾插法 指定位置插入 查找元素 删除第一次出现的关键字 删除所有值为key的节点 三.完整代码 一.双向链表是什么 双向链表也叫双链表,是链表的一种,它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱.所以,从双向链表中的任意一个结点开始,都可以很方便地访问它的前驱结点和后继结点.一般我们都构造双向循环链表. LinkedList底层就是一个双向链表,我们来实现一个双向链表. 这

  • r.js来合并压缩css文件的示例

    如何使用r.js来合并压缩css文件.在r5下新建一个css文件夹,里面有四个css文件:main.css.nav.css.form.css.grid.css. main.css是合并的主文件,或称配置文件.要合并的文件使用@import引入.如下 main.css @importurl("nav.css"); @importurl("grid.css"); @importurl("form.css"); 另外三个是普通的css文件,里面定义的各

随机推荐