我用C#?运算符,当我有if语句影响一行,这一切都很好.但是让我说我有这个代码(使用经典的if语句):
if(someStatement)
{
someBool = true; //someBools value is unknown
}
else
{
//Do nothing
}
Run Code Online (Sandbox Code Playgroud)
这可以通过以下方式在单线上实现:
someBool = (someStatement) ? true : someBool;
Run Code Online (Sandbox Code Playgroud)
但为什么我不能这样做:
someBool = (someStatement) ? true : ;
//or possibly
someBool = (someStatement) ? true;
Run Code Online (Sandbox Code Playgroud)
这有可能吗?如果是,使用一种方法比另一种方法有什么好处吗?如果没有,为什么你不能这样做?
我只是好奇这是否可能,或者是否有办法使其成为 C# 的有效语法:
expression == value ? /*do nothing here, or put some empty block like { ; } */ : SomeClass.SomeMethod();
Run Code Online (Sandbox Code Playgroud)
编辑:为了深入讨论和更多信息,我认为这个块会起作用(如果测试的字典键不存在,它会添加字典。否则,它将跳过):
(!packageDict.ContainsKey(desc)) ? packageDict.Add(desc, subtotal) : /*does nothing*/;
Run Code Online (Sandbox Code Playgroud) c# syntax dictionary ternary-operator conditional-statements