C#语法糖空合并运算符【??】和空合并赋值运算符【 ??=】

例子

比如说:我们有一个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 = null;string address = user.Address?.First();if (address == null){address = "上海市";}}

于是微软的工程师觉得我们既然可以使用?.优化属性这种类型判空,那我们能不能判断当计算结果为空时,给他进行赋值呢?于是微软工程师说干就干,所以空合并运算符就应运而生了,我们的代码就变成了

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

当然有的小伙伴就说了,这样好像不太满足一种情况,比如说当我们的Address为空时,怎么给User.address赋值呢?,还是只能写成这种模式,治标不治本。

UserInformation user = new UserInformation();user.Name = "张三";user.Address = null;if (user.Address == null){user.Address= new List<string> { "上海市" };}

于是微软工程师觉得你小瞧我,说我治标不治本,那我不服,我必须要搞一个空合并赋值运算符,于是这个代码就变成了

static void Main(string[] args){UserInformation user = new UserInformation();user.Name = "张三";user.Address = null;user.Address??= new List<string> { "上海市" };}

今天的介绍就到此结束了,

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/288986.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

DNS的理解

1 DNS是什么 DNS(Domain Name System) ,域名系统 作用:域名转化成ip 为什么要用DNS:访问一个网址需要知道ip,但是ip每个页面不同不方便记,我们需要给ip取一个别名,方便我们记忆,比如 www.baidu.com,这些域名我们记住就行了,但是怎么从这些域名转化成相应的ip呢?,我…

eos操作系统_EOS相机统一的用户界面

自EOS相机诞生起就未改变的基本布局精心设计的操作系统EOS数码单反相机从普及机型到高端机型的按钮布局都是共通的。快门按钮的位置自不必说&#xff0c;主拨盘位置和背面按钮的配置也基本相同。特点是在手柄一侧集中配置用于进行主要操作的按钮。实现了只用右手就能完成拍摄相…

CSS3中弹性盒布局的最新版

虽然可以使用其他CSS样式属性来实现页面布局处理&#xff0c;但是如果使用CSS Flexible Box模块中定义的弹性盒布局技术&#xff0c;可以根据屏幕尺寸或浏览器窗口尺寸自动调整页面中各局部区域的显示方式&#xff0c;即实现非常灵活的布局处理。虽然CSS Flexible Box模块已经被…

java filechannel 空_Java NIO FileChanel

http://www.cnblogs.com/interdrp/p/3785164.html(好)path--->path 耗时&#xff1a;49毫秒pos:1048576pos:2097152pos:3145728pos:4194304pos:5242880pos:6291456pos:7340032pos:8388608pos:9437184pos:10485760pos:11534336pos:12582912pos:13631488pos:14680064pos:15728…

C# 的扩展方法在 LINQ 中实现数组排序

首先定义一个数组&#xff0c;int[] a { 3,1,2,4}&#xff0c;我们要简单的实现该数组的排序&#xff0c;但是a数组是System空间下的&#xff0c;没有OrderBy()之类的方法&#xff0c;这是我们引入命名空间using System.Linq之后可以看见又该方法了。给个简单的例子如下&#…

【C语言简单说】三:变量总结ASCII码扩展(5)

前面几个小节都在说变量&#xff0c;那么这一节我们就来总结一下 int表示整数&#xff0c;float表示小数&#xff0c;char表示字符。他们所匹配的&#xff0c;整数&#xff1a;%d&#xff1b;浮点数&#xff1a;%f&#xff1b;字符&#xff1a;%c。 我们来看一个程序&#xf…

关于动态修改定时器的时间间隔

定时器的时间间隔是不能修改的&#xff0c;只能不停的创建&#xff0c;清除&#xff0c;创建。做出时间间隔变换的表象使用函数表达式和递归实现&#xff1a; var counter 10; var myFunction function(){clearInterval(interval);counter * 10;interval setInterval(myFunc…

c#语法糖模式匹配【switch 表达式】

例子我们首先定义一个颜色枚举public enum ColorEnum{ Red,Blue,Black,}我们写一个方法获取颜色的RGB值&#xff0c;我们这里使用Switch表达式&#xff0c;传统做法是:switch 语句在其每个 case 块中生成一个值,比如这样private Color GetColorRgb(ColorEnum colorEnum){switch…

Windows之Fiddler抓HTTP和HTTPS请求

1 Fiddler 1) 介绍:Fiddler是抓包工具,原理是以web代理服务器的形式进行工作的,使用的代理地址是:127.0.0.1,端口默认为8888,我们也可以通过设置进行修改 2)下载地址:到Fiddler官网下载,直接百度 Fiddler官网 2 Fiddler抓HTTP的包 比如我们需要抓谷歌浏览器的http请…

2015华为校招机试面试

昨天参加了华为南研所校招的机试&#xff0c;一共三道题&#xff0c;第一题很简单&#xff0c;输入一个字符串格式的日期&#xff0c;年-月&#xff0c;输出该月有多少天&#xff0c;主要注意闰年&#xff08;&#xff08;%40&&%100&#xff01;0&#xff09;||%4000&a…

python字典和集合对象可以进行索引_Python字典和集合

1、泛映射类型 collections.abc 模块中有 Mapping 和 MutableMapping 这两个抽象类&#xff0c;他们的作用是为dict和其他类似的类型定义形式接口。 标准库里所有映射类型都是利用dict来实现的&#xff0c;因此他们有个共同的限制&#xff0c;只有可散列的数据类型才能用作这些…

java继承与覆盖_简单的继承,方法重载与方法覆盖

[java]代码库package com.jiarui;public class Demo1 {public static void main(String[] args) {Dog dog1 new Dog(2,"大黄");System.out.println(dog1.name"的年龄为&#xff1a;"dog1.getAge());dog1.Cry();Cat cat1new Cat(3,"小花");cat1.C…

LINQ语句的两种语法实现方式

using System; using System.Linq;namespace LINQ语法实现 {class Program{static void Main(string[] args){int[] a { 3,1,2,4};//1.Query syntaxvar Query1 from num in a where num % 2 0 orderby num select num;foreach (var i in Query1){Console.WriteLine("{0…

圣杯布局

先看看效果&#xff08;1&#xff09;左边固定宽度&#xff0c;右边自适应 <!DOCTYPE html> <html> <head><title>shengbei</title><meta charset"utf-8" /><style type"text/css">*{margin:0px;padding: 0px;}…

【C语言简单说】四:常量

常量和变量是一种相对的概念&#xff0c;在这里我开始跟大家说说常量和变量的区别。可能前几节的小伙伴们并没有能感受出来&#xff0c;不过有了常量的对比那么将会有很好的理解。 .._|||||.. 头昏眼花 常量&#xff0c;就是一些固定的数据&#xff0c;也就是说你把数据装到…

虚幻4 碰撞过滤

原创翻译&#xff0c;转载请注明出处。&#xff08;http://blog.csdn.net/sinat_24229853/article/details/51090259&#xff09; 英文原文&#xff1a;https://www.unrealengine.com/blog/collision-filtering?langzh-CN 选择什么样的碰撞显然是很重要的。但它可能会很棘手&…

基于.NetCore开发博客项目 StarBlog - (1) 为什么需要自己写一个博客?

前言OK&#xff0c;我也来造轮子了博客系统从一开始用WordPress&#xff0c;再到后来用hexo、hugo之类的静态博客生成放github托管&#xff0c;一直在折腾折腾是为了更好解决问题&#xff0c;最终还是打算自己花时间搞一个好了本系列文章将记录博客的开发过程~ 将会持续更新&am…

linux之dig命令

1 dig命令的作用 一般我们可以用dig命令解析域名成ip,或者把ip解析成域名,或查看这个域名所经过的域名服务器,这点是 nslookup命令没有的功能. DNSpod:注册域名,首先得找到域名注册商,国内的比较著名的有DNSpod 2 一般使用 1) 解析域名成ip dig 域名 这里测试 dig ww…

Diocp截图

跑了个数据库的查询和插入&#xff0c;删除。 Http SVR DEMO http://123.232.98.202:8081/

C#中泛型在Class上的实现

using System; using System.Collections.Generic; using System.Linq; using System.Text;namespace ConsoleApplication1 {class Program{static void Main(string[] args){GenericArray<int> intArray = new GenericArray<int>(5);//实例化一个泛型的数组for (i…