例子
比如说:我们有一个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生态圈越来越好!