Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如果为空,是否简写为创建新实例?_C# - Fatal编程技术网

C# 如果为空,是否简写为创建新实例?

C# 如果为空,是否简写为创建新实例?,c#,C#,在Javascript中,我可以做到这一点: var myVar=returnNull()|| new MyObject() 在C#中,我目前正在这样做: var myVar = returnObjectOrNull(); if (myVar == null) myVar = new MyObject(); 有没有办法在C#中缩短它?使用运算符 还是你的情况 var myVar = returnObjectOrNull() ?? new MyObject(); 这个??运算符称为空合并运算

在Javascript中,我可以做到这一点:

var myVar=returnNull()|| new MyObject()

在C#中,我目前正在这样做:

var myVar = returnObjectOrNull();

if (myVar == null) myVar = new MyObject();
有没有办法在C#中缩短它?

使用运算符

还是你的情况

var myVar = returnObjectOrNull() ?? new MyObject();
这个??运算符称为空合并运算符,用于 为可为空的值类型或引用类型定义默认值。信息技术 如果操作数不为null,则返回左侧操作数;否则它 返回正确的操作数

使用:


使用空合并运算符

var myVar = returnObjectOrNull();

myVar = myVar ?? new MyObject();

是的,有,它被称为:

请注意,如果左侧不为null,此运算符将不会计算右侧,这意味着上面的代码行不会创建新的MyObject,除非它必须创建

下面是一个示例程序来演示:

void Main()
{
    var myVar = returnObjectOrNull() ?? new MyObject();
}

public MyObject returnObjectOrNull()
{
    return new MyObject();
}

public class MyObject
{
    public MyObject()
    {
        Debug.WriteLine("MyObject created");
    }
}
这将输出一次“MyObject created”,这意味着在returnObjectOrNull方法中只创建一个对象,而不是在语句行中创建的对象。

您可以使用类似运算符的

var myVar = returnObjectOrNull() ?? new MyObject();
??
运算符称为空合并运算符,用于 为可为空的值类型或引用类型定义默认值。信息技术 如果操作数不为null,则返回左侧操作数;否则它 返回正确的操作数


哈哈,每个人都有相同的答案!就像你们所有人都复制并粘贴了答案,然后作为自己的答案提交。答案只有一个,所以每个人的答案几乎相同也就不足为奇了。@PatrickMagee实际上,这太正常了。这是一个基本问题,所有答案都有时间戳。就像这个问题,在Stackoverflow中这太正常了。我知道,我知道,但当我刷新每个人都有相同的变量名和所有内容时,这很有趣,我想每个人都只是修改了问题中的示例。
var myVar = returnObjectOrNull() ?? new MyObject();
void Main()
{
    var myVar = returnObjectOrNull() ?? new MyObject();
}

public MyObject returnObjectOrNull()
{
    return new MyObject();
}

public class MyObject
{
    public MyObject()
    {
        Debug.WriteLine("MyObject created");
    }
}
var myVar = returnObjectOrNull() ?? new MyObject();