C#语法糖 Null 条件运算符 【?.】
例子
比如说:我们有一个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 条件运算符 【?.】相关推荐
- Java中switch参数传null会引起异常——Java 语法糖
问题 switch 参数不能是null,swicth(null)会报java.lang.NullPointerException异常 查找原因 为什么会这样呢,查找一下原因: 找到编译后的class文 ...
- 探索C#之6.0语法糖剖析
原文地址:http://www.cnblogs.com/mushroom/archive/2015/07/22/4666113.html#six 2015-07-22 08:29 by 蘑菇先生, 8 ...
- javascript语法糖_语法糖和JavaScript糖尿病
javascript语法糖 by Ryan Yurkanin 瑞安·尤卡宁(Ryan Yurkanin) 语法糖和JavaScript糖尿病 (Syntactic Sugar and JavaScri ...
- C#语法糖(Csharp Syntactic sugar)大汇总
首先需要声明的是"语法糖"这个词绝非贬义词,它可以给我带来方便,是一种便捷的写法,编译器会帮我们做转换:而且可以提高开发编码的效率,在性能上也不会带来损失.这让java开发人员羡慕 ...
- 看看C# 6.0中那些语法糖都干了些什么(终结篇)
终于写到终结篇了,整个人像在梦游一样,说完这一篇我得继续写我的js系列啦. 一:带索引的对象初始化器 还是按照江湖老规矩,先扒开看看到底是个什么玩意. 1 static void Main(strin ...
- Java的12个语法糖【转】
本文转载自公众号 Hollis 原创: 会反编译的 Hollis 侵权删 本文从 Java 编译原理角度,深入字节码及 class 文件,抽丝剥茧,了解 Java 中的语法糖原理及用法,帮助大家在学 ...
- java try resource_从 Java 字节码角度看 try with resource 语法糖
Java 7中的 try-with-resource,在没有这个语法糖的情况下的等价实现是什么? 以下面的demo为例,这个问题目测99%的人都写不完全正确,不信来战. public static v ...
- Kotlin 中的 run、let、with、apply、also、takeIf、takeUnless 语法糖使用和原理分析
这些Kotlin的语法糖函数经常用,但也很容易搞混,所以转载一下,若混了可以回来再看 转载自公众号:纸上浅谈 正文: 在 Kotlin 有一些可以简化代码的语法糖,比如 run.let.with.ap ...
- java for 迭代器_Java基础-迭代器Iterator与语法糖for-each
迭代器Iterator与语法糖for-each 一.为什么需要迭代器 设计模式迭代器 迭代器作用于集合,是用来遍历集合元素的对象.迭代器不是Java独有的,大部分高级语言都提供了迭代器来遍历集合.实际 ...
最新文章
- webStroage案例
- CENTOS在输入ifconfig命令时,提示没有命令的处理方法
- YARN 任务执行报错:Caused by: java.io.IOException: Exceeded MAX_FAILED_UNIQUE_FETCHES; bailing-out
- 网络配置 rpm yum
- JDBC结合JSP使用(2)
- @Value取值为NULL的解决方案
- SVN的学习和使用(七)——SVN提交操作
- uni-app官方教程学习手记 1
- 关闭git命令窗快捷键_git常用命令与AndroidStudio常用快捷键
- linux服务器硬件配置,linux服务器硬件配置要求是多少
- 如何在IGV上使用BLAT搜索非模式物种
- 【观察】戴尔科技:未来企业的创新平台,数字中国的坚实底座
- SSD固态盘已坏的数据就恢复不了吗?
- C++游戏——小胎大乱斗
- 【机器学习】线性回归实战案例一:多元素情况下广告投放效果分析步骤详解
- C++快慢指针理解与应用
- Commons Collections
- Vue.js 响应式原理
- pic12f1823单片机入门_PIC单片机新手快速入门
- 不花钱,自己查论文抄袭程度