C#:空值检查与属性赋值的单行简化写法咨询
问题解答
直接使用Data.GetElement()?.IsSelected = true;无法通过编译,因为C#中空条件运算符?.的返回结果不能作为赋值操作的左值——它本质上是返回一个临时值或可空类型实例,无法直接修改原对象的属性。
不过你可以用以下几种简洁的写法实现需求:
1. C# 8.0+ 模式匹配写法(推荐)
if (Data.GetElement() is { } element) element.IsSelected = true;
这里的{ }是模式匹配中的"非null模式",会自动将Data.GetElement()的结果赋值给element变量,同时完成空检查,代码紧凑且可读性强。
2. 兼容全版本的单行写法
如果使用的是更早版本的C#,可以把变量声明和空检查合并到一行:
var element = Data.GetElement(); if (element != null) element.IsSelected = true;
这种写法兼容性更好,适用于所有C#版本。
内容的提问来源于stack exchange,提问作者Dmitrii Sannikov
相关产品推荐
相关产品推荐

