有没有办法让三元运算符做到这一点?:
if (SomeBool)
SomeStringProperty = SomeValue;
我可以这样做:
SomeStringProperty = someBool ? SomeValue : SomeStringProperty;
但即使SomeBool为false(右),这也会触发SomeStringProperty的getter和settor?所以它与上述陈述不同。
我知道解决方案是不使用三元运算符,但我只是想知道是否有办法忽略表达式的最后部分。
答案 0 :(得分:5)
这没有任何意义。
三元运算符是一个表达式 表达式必须始终具有值unless the expression is used as a statement(三元运算符不能)。
你不能写SomeProperty = nothing
答案 1 :(得分:2)
除非你必须存储三元表达式的结果,否则你将完成与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
答案 2 :(得分:1)
我认为您正在寻找类似于C#三元运营商的短路评估(http://en.wikipedia.org/wiki/Short-circuit_evaluation)。
我相信你会发现答案是肯定的。
与贬低它的人相反,我认为这是一个有效的问题。