C#语法糖空合并运算符和空合并赋值运算符

7 篇文章 0 订阅
2 篇文章 0 订阅

原文地址:https://mp.weixin.qq.com/s/od-i8NRnU_Mr_MzmVFg0hw
比如说:我们有一个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> { "上海市" };
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值