C# 提供了一个所谓的 ”空接合操作符“ - 即??操作符,他要获取两个操作数。

  假如左边的操作数部位null,就返回这个操作数。如果左边的操作数为null就返回右边。

空接合操作符一个妙处在于,它既能用于引用类型,也能用于空值类型。

        static void Main(string[] args)
{
Int32? b = null; //下面这行代码等价于
//x = (b.HasValue) ? b.Value : 123;
Int32 x = b ?? ; string temp = "";
string fileTemp = (temp == null) ? temp : "Untitled";
string fileTemp1 = GetName() ?? "Untitled"; Console.ReadLine();
} public static string GetName()
{
return null;
}

在看下一个例子。

        static void Main(string[] args)
{ //f1是否不 f简洁很多呢。
Func<string> f1 = () => SomeMethod() ?? "Untitled";
Func<string> f = () => { var temps = SomeMethod(); return temps != null ? temps : "Untitled"; }; //第二个 在复合情形中的用法
Func<string> s1 = () => SomeMethod() ?? SomeMethod2() ?? "Untitled";
//比下面的代码更容易阅读些
string s;
string sm1 = SomeMethod1();
if (sm1 != null)
{
s = sm1;
}
else
{
string sm2 = SomeMethod2();
if (sm2 != null)
s = sm2;
else
s = "Untitled";
}
Console.ReadLine();
} public static string SomeMethod()
{
return null;
}
public static string SomeMethod1()
{
return null;
}
public static string SomeMethod2()
{
return null;
}

  

.net 空接合操作符 ??的更多相关文章

  1. C#空接合操作符——??

    操作符: ?? 用法:C = A ?? B; 解释:if(A != null){ C=A;} else{C=B}     类似三元运算符 :? 例子: Int32? num1=null; Int32? ...

  2. C# --- ??(空接合操作符)的一个案例

    Nullable<Int32> x = null; Nullable<Int32> y = null; Nullable<Int32> z = null; Int3 ...

  3. 30天C#基础巩固-----值类型/引用类型,泛型,空合并操作符(??),匿名方法

    一:值类型/引用类型的区别      值类型主要包括简单类型,枚举类型,和结构体类型等,值类型的实例通常被分配在线程堆栈上面变量保存的内容是实例数据本身.引用类型被分配在托管堆上,变量保存的是地址.引 ...

  4. c# 空接合(??)运算符的运用

    相信很多人都看到??运算符,但是不一定每个人都知道它是用来做什么的,之前我也看到过很多次,但是因为一直没有去用过,所以也没有了解他的作用,今天又看到了,所以查了的MSDN,原来??运算符叫做空接合运算 ...

  5. C#的空接合运算符 三目运算符

    1.空接合运算符:操作数1??操作数2: 2.第一个操作数必须是一个可空类型或引用类型,第二个操作数必须与第一个操作数类型相同,或者可以隐含的转换为第一个操作数的类型: 3.如果第一个操作数不为nul ...

  6. 空合并操作符??(C#)

    ??二元操作符在对first??second求值时,大致会经历以下步骤: 1)对first进行求值: 2)如果结果非空,则该结果就是整个表达式的结果: 3)否则求second的值,其结果作为整个表达式 ...

  7. C# 空合并操作符(??)不可重载?其实有黑科技可以间接重载!

    ?? 操作符叫做 null-coalescing operator,即 null 合并运算符.如果此运算符的左操作数不为 null,则此运算符将返回左操作数:否则返回右操作数. 在微软的官方 C# 文 ...

  8. 08.C# System.Nulable<T>和空引用操作符(四章4.2-4.4)

    看了这3小节,发现作者讲得太详细了,把一个都在正常使用的用法说得太神密了,搞得不知是自己不懂作者的苦心,还是作者用意为之,这里给大家都简单讲下吧,太深的真心讲不下去. 1.可空类型的核心部分是Syst ...

  9. C# 本质论 第三章 操作符和控制流

    操作符通常分为3大类:一元操作符(正.负).二元操作符(加.减.乘.除.取余)和三元操作符( condition?consequence:alternative(consequence和alterna ...

随机推荐

  1. 直接通过ADO操作Access数据库

    我在<VC知识库在线杂志>第十四期和第十五期上曾发表了两篇文章——“直接通过ODBC读.写Excel表格文件”和“直接通过DAO读.写Access文件”,先后给大家介绍了ODBC和DAO两 ...

  2. redis和phpredis扩展的安装

    redis的安装https://code.google.com/p/redis/downloads/list下载redisredis-2.6.13.tar.gztar -xvzf redis-2.6. ...

  3. 【转】 Pro Android学习笔记(九三):AsyncTask(2):小例子

    目录(?)[-] 继承AsyncTask UI操作接口 使用AsyncTask 文章转载只能用于非商业性质,且不能带有虚拟货币.积分.注册等附加条件.转载须注明出处:http://blog.csdn. ...

  4. Linux学习笔记 - 入门

    简介 Linux内核最初只是由芬兰人李纳斯·托瓦兹(Linus Torvalds)在赫尔辛基大学上学时出于个人爱好而编写的. Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSI ...

  5. 关系数据库元组关系演算语言ALPHA

    关系演算 :以数理逻辑中的谓词演算为基础 按谓词变元不同分类 1.元组关系演算:以元组变量作为谓词变元的基本对象元组关系演算语言ALPHA2.域关系演算:以域变量作为谓词变元的基本对象域关系演算语言Q ...

  6. mysql流程控制

    一 流程控制 delimiter // CREATE PROCEDURE proc_if () BEGIN declare i int default 0; if i = 1 THEN SELECT ...

  7. python' s fifth day for me dict

    字典 dict : key--vlaue 储存大量的数据,而且是关系型数据,查询速度快(二分查询) 数据类型分类: 可变数据类型(不可哈希):list(列表) , dict(字典), set(集合) ...

  8. java成神之——集合框架之Array

    Array 初始化 填充元素的几种方式 数组转流 遍历 数组转成字符串 排序 查找 数组扩大 原始类型数组和包装类型数组转换 移除元素 比较数组是否相等 克隆 类型转换 过滤元素 结语 Array 初 ...

  9. springboot成神之——springboot入门使用

    springboot创建webservice访问mysql(使用maven) 安装 起步 spring常用命令 spring常见注释 springboot入门级使用 配置你的pom.xml文件 配置文 ...

  10. 前端学习---css基本知识

    css基本知识 我们先看一个小例子: <!DOCTYPE html> <html lang="en"> <head> <meta char ...