例子

比如说:我们有一个UserInformation类

public class UserInformation{ public string Name { get; set; }public List<string> Address { get; set; }}

有下面一段代码,我们获取张三的第一个地址

static void Main(string[] args){UserInformation user = new UserInformation();user.Name = "张三";user.Address = new List<string> { "浙江省", "上海市" };string address = user.Address.First();}

因为我们已经知道UserInformation类的Address属性是有值的,这样写肯定是没有任何问题的,但是List是一个引用类型可以为null,,我们在使用的时候根本不知道Address属性是否有值,比如说:

static void Main(string[] args){UserInformation user = new UserInformation();user.Name = "张三";user.Address = null;string address = user.Address.First();}

我们肯定会去判断Address是否为空,但是我们为了代码健壮性,我们第一段代码应该修改成:

static void Main(string[] args){UserInformation user = new UserInformation();user.Name = "张三";user.Address = new List<string> { "浙江省", "上海市" };if(user.Address!=null){string address = user.Address.First();}}

这样才是一个正确的例子,但是有的人就觉得这样写很麻烦,多了三行代码,于是微软为了解决这个问题就添加了Null 条件运算符?. 这个语法糖, 那上面代码可以改成什么样子呢?

static void Main(string[] args){UserInformation user = new UserInformation();user.Name = "张三";user.Address = new List<string> { "浙江省", "上海市" };string address = user.Address?.First();Console.ReadLine();}

这样写的话是不是就很便捷了,可读性也高,性能也不会损失,编译器就给我们把这个事情做了

最后大家如果喜欢我的文章,还麻烦给个关注并点个赞, 希望net生态圈越来越好!

C#语法糖 Null 条件运算符 【?.】相关推荐

  1. Java中switch参数传null会引起异常——Java 语法糖

    问题 switch 参数不能是null,swicth(null)会报java.lang.NullPointerException异常 查找原因 为什么会这样呢,查找一下原因: 找到编译后的class文 ...

  2. 探索C#之6.0语法糖剖析

    原文地址:http://www.cnblogs.com/mushroom/archive/2015/07/22/4666113.html#six 2015-07-22 08:29 by 蘑菇先生, 8 ...

  3. javascript语法糖_语法糖和JavaScript糖尿病

    javascript语法糖 by Ryan Yurkanin 瑞安·尤卡宁(Ryan Yurkanin) 语法糖和JavaScript糖尿病 (Syntactic Sugar and JavaScri ...

  4. C#语法糖(Csharp Syntactic sugar)大汇总

    首先需要声明的是"语法糖"这个词绝非贬义词,它可以给我带来方便,是一种便捷的写法,编译器会帮我们做转换:而且可以提高开发编码的效率,在性能上也不会带来损失.这让java开发人员羡慕 ...

  5. 看看C# 6.0中那些语法糖都干了些什么(终结篇)

    终于写到终结篇了,整个人像在梦游一样,说完这一篇我得继续写我的js系列啦. 一:带索引的对象初始化器 还是按照江湖老规矩,先扒开看看到底是个什么玩意. 1 static void Main(strin ...

  6. Java的12个语法糖【转】

    本文转载自公众号  Hollis 原创: 会反编译的 Hollis 侵权删 本文从 Java 编译原理角度,深入字节码及 class 文件,抽丝剥茧,了解 Java 中的语法糖原理及用法,帮助大家在学 ...

  7. java try resource_从 Java 字节码角度看 try with resource 语法糖

    Java 7中的 try-with-resource,在没有这个语法糖的情况下的等价实现是什么? 以下面的demo为例,这个问题目测99%的人都写不完全正确,不信来战. public static v ...

  8. Kotlin 中的 run、let、with、apply、also、takeIf、takeUnless 语法糖使用和原理分析

    这些Kotlin的语法糖函数经常用,但也很容易搞混,所以转载一下,若混了可以回来再看 转载自公众号:纸上浅谈 正文: 在 Kotlin 有一些可以简化代码的语法糖,比如 run.let.with.ap ...

  9. java for 迭代器_Java基础-迭代器Iterator与语法糖for-each

    迭代器Iterator与语法糖for-each 一.为什么需要迭代器 设计模式迭代器 迭代器作用于集合,是用来遍历集合元素的对象.迭代器不是Java独有的,大部分高级语言都提供了迭代器来遍历集合.实际 ...

最新文章

  1. webStroage案例
  2. CENTOS在输入ifconfig命令时,提示没有命令的处理方法
  3. YARN 任务执行报错:Caused by: java.io.IOException: Exceeded MAX_FAILED_UNIQUE_FETCHES; bailing-out
  4. 网络配置 rpm yum
  5. JDBC结合JSP使用(2)
  6. @Value取值为NULL的解决方案
  7. SVN的学习和使用(七)——SVN提交操作
  8. uni-app官方教程学习手记 1
  9. 关闭git命令窗快捷键_git常用命令与AndroidStudio常用快捷键
  10. linux服务器硬件配置,linux服务器硬件配置要求是多少
  11. 如何在IGV上使用BLAT搜索非模式物种
  12. 【观察】戴尔科技:未来企业的创新平台,数字中国的坚实底座
  13. SSD固态盘已坏的数据就恢复不了吗?
  14. C++游戏——小胎大乱斗
  15. 【机器学习】线性回归实战案例一:多元素情况下广告投放效果分析步骤详解
  16. C++快慢指针理解与应用
  17. Commons Collections
  18. Vue.js 响应式原理
  19. pic12f1823单片机入门_PIC单片机新手快速入门
  20. 不花钱,自己查论文抄袭程度

热门文章

  1. Invalidate和postInvalidate
  2. Android框架式编程之BufferKnife
  3. 算法学习之循环结构程序设计
  4. ie8下修改input的type属性报错
  5. HDS业务定义永续IT架构
  6. 生成arff文件,csv转为arff
  7. 使silverlight适应IE窗口大小的方法
  8. 使用maven构建项目候,jar包错误的解决办法
  9. Newtonsoft.Json Deserialize Type 或者 同类型 变量 反序列化
  10. JAVA常见算法题(三十一)---冒泡排序