c# if not null then assign value 的简写

标签 c# shorthand null-coalescing-operator null-coalescing

现在c#中是否有任何速记可以减少以下代码:

var testVar1 = checkObject();
if (testVar1 != null)
{
      testVar2 = testVar1;
}

在这种情况下,如果 CheckObject() 结果中的 testVar1 不为空,则只想分配 testVar2(testVar2 有一个将触发代码的 setter )。试图思考如何使用空合并的东西但没有真正解决。

添加到此 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);

关于c# if not null then assign value 的简写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56485596/

相关文章:

c# - Xamarin ios : ABAddressbook. 创建始终为空,无法请求访问

c# - 套接字异常 : "access denied" while opening port using UdpClient

javascript - 那里有好的 JS 速记引用吗?

javascript - 简写 javascript 中的多个操作

javascript - 简写如果?返回 : null

c# - 启动隐藏的 Windows 窗体应用程序 - 高内存使用率?

c# - Visual C# 2008,读取 XML 文件并填充 listView

c# - "??"运算符是做什么用的?

c# - 空合并运算符赋值给自己

PHP Elvis 运算符与空合并运算符