【发布时间】:2015-02-02 13:02:38
【问题描述】:
如果变量已经是null,我想有条件地为变量赋值。此外,如果该变量还不是 null 我希望 nothing 发生,并且我希望能够使用单个运算符完成所有操作。
object a = null;
object b = new Something();
// this is essentially what I want but done with an operator:
if(a == null)
{
a = b;
}
// this is all I feel I have to work with,
a = a || b;
a = a ?? b;
a = a == null ? b : a;
// the above methods all end up performing a = a if a is not null
【问题讨论】:
-
所以我认为
a = a ?? b;已经出局了? -
@JoelRondeau 看起来如此 - OP 不希望
a被分配回自己。 -
那么你必须使用
if来避免分配。我没有看到任何其他选择。无论如何,做a = a应该不是问题,除非setter 有一些庞大的逻辑。 -
你说
a = a ?? b之类的东西最终会执行 a = a 如果 a 不为空,但你没有解释为什么这是一个问题。 -
你有不想要
a = a的理由吗?这对您的应用程序是否有害?
标签: c# c#-4.0 variable-assignment