有没有一种方法可以不从三元运算符的最后一部分返回值?
本文关键字:运算符 三元 一部分 返回值 最后 一种 方法 有没有 | 更新日期: 2023-09-27 18:17:02
是否有一种方法可以让三元运算符做同样的事情?:
if (SomeBool)
SomeStringProperty = SomeValue;
我可以这样做:
SomeStringProperty = someBool ? SomeValue : SomeStringProperty;
但这将触发getter和setter SomeStringProperty即使SomeBool是假的(对吗)?因此,它与上面的语句不一样。
我知道解决方案是不使用三元运算符,但我只是想知道是否有一种方法可以忽略表达式的最后一部分。
这没有意义。
三元操作符为表达式。
表达式必须总是有值,除非该表达式用作语句(三元操作符不能用作语句)。
不能写SomeProperty = nothing
这是你能得到的与IF语句相同的结果,除了你必须存储三元表达式的结果;即使你没有真正使用它…
完整的示例:
namespace Blah
{
public class TernaryTest
{
public static void Main(string[] args)
{
bool someBool = true;
string someString = string.Empty;
string someValue = "hi";
object result = null;
// if someBool is true, assign someValue to someString,
// otherwise, effectively do nothing.
result = (someBool) ? someString = someValue : null;
} // end method Main
} // end class TernaryTest
} // end namespace Blah
我想你是在寻找类似c#三元运算符的短路求值(http://en.wikipedia.org/wiki/Short-circuit_evaluation)。
我相信你会发现答案是否定的。与那些投反对票的人相比,我认为这是一个有效的问题。