C# 如果为空,是否简写为创建新实例?
在Javascript中,我可以做到这一点: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(); 这个??运算符称为空合并运算
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();