【发布时间】:2021-03-11 10:46:27
【问题描述】:
我正在尝试将合并运算符与条件运算符结合起来。这不会编译,我想知道是否有办法绕过它而不写一堆 if 语句:
public static Setting GetSetting(this Account account, string key, bool newIfNull = true)
{
return account.Settings
.FirstOrDefault(x =>
x.Key.Equals(key, StringComparison.CurrentCultureIgnoreCase)) ??
newIfNull ? new Setting
{
Key = key
} : null
};
}
这将是 if 语句的替代方案:
public static Setting GetSetting(this Account account, string key, bool newIfNull = true)
{
var setting = account.Settings
.FirstOrDefault(x =>
x.Key.Equals(key, StringComparison.CurrentCultureIgnoreCase));
if (setting != null)
{
return setting;
}
return newIfNull ? new Setting
{
Key = key
} : null;
}
有什么建议吗?我也很好奇为什么如果有人知道它不能编译。
【问题讨论】:
-
添加一些括号?
thing ?? (cond ? t : f) -
你试过把
??之后的所有东西都放在括号里吗? -
背后的逻辑是什么?
-
请显示编译器错误以及您尝试解决的方法。
-
@canton7 将所有内容放在一行中并不总是一个好主意
标签: c#