c# - c# if not null then assign value的简写
问题描述
现在 c# 中是否有任何简写可以减少以下代码:
var testVar1 = checkObject();
if (testVar1 != null)
{
testVar2 = testVar1;
}
在这种情况下,如果 testVar1 从 CheckObject() 结果中不为空,则只想分配 testVar2(testVar2 有一个将触发代码的设置器)。试图思考如何使用空合并的东西,但没有真正解决。
添加到这个 testVar2 的 setter 上有代码可以触发,所以如果值为 null,不希望 testVar2 被设置为任何值。
public MyObj testVar2
{
get { return _testVar2; }
set
{
_testVar2 = value;
RunSomeCode();
}
}
解决方案
有一对!
三元运算符:
testvar2 = testVar1 != null ? testvar1 : testvar2;
将是完全相同的逻辑。
或者,如评论所述,您可以使用空合并运算符:
testVar2 = testVar1 ?? testVar2
(虽然现在这也被评论了)
或者第三种选择:编写一次方法并按照您的喜好使用它:
public static class CheckIt
{
public static void SetWhenNotNull(string mightBeNull,ref string notNullable)
{
if (mightBeNull != null)
{
notNullable = mightBeNull;
}
}
}
并称之为:
CheckIt.SetWhenNotNull(test1, ref test2);
推荐阅读
- html - 为什么网格元素不能正确跨越、定位和调整大小?
- regex - 在正则表达式中选择以编辑开头的行并忽略其余字符以在行尾插入“
- gradle - 如何向 SourceSet 添加多个目录和过滤模式?
- terraform - 从重用模块中获取资源的输出
- python - 如何在 Tensor Flow 2.0、keras 的 Conv2D 层中指定 input_shape
- android - 如何使用材料设计制作有角度的顶部应用栏?
- javascript - 一个按钮的两个事件
- r - 在 ggplot 中为 r 中一行中的每个唯一值创建图
- flutter - 更新后 LinearGradient 缺少参数颜色
- python - str 没有转换为 float/int,因为它没有像数字一样忽略 '\n' - python