C#&&运算,该如何解决
C#&&运算
表达式1&&表达式2&&表达式3
表达式1为true
表达式2为false
表达式3为true
最后的结果为什么就变成了true了呢?百思不得其解啊
------解决方案--------------------
那就说明这3个表达试都是true,去思考下为什么都是true了,而不是在想&&的问题
------解决方案--------------------
对表达式求值本身会不会改变表达式的值?
比如:
表达式1&&表达式2&&表达式3
表达式1为true
表达式2为false
表达式3为true
最后的结果为什么就变成了true了呢?百思不得其解啊
------解决方案--------------------
那就说明这3个表达试都是true,去思考下为什么都是true了,而不是在想&&的问题
------解决方案--------------------
对表达式求值本身会不会改变表达式的值?
比如:
- C# code
bool ShareBooleanVar = false; Func<bool> f1 = () => ShareBooleanVar = !ShareBooleanVar; Func<bool> f2 = () => !(ShareBooleanVar = !ShareBooleanVar); Func<bool> f3 = () => ShareBooleanVar = true; Console.WriteLine((f1() && f2() && f3())); Console.WriteLine((f1() && f2() && f3())); Console.WriteLine((f1() && f2() && f3()));
------解决方案--------------------
可能是其他地方的问题吧,按逻辑的话应该是false
------解决方案--------------------
你看错了 其实表达式2为true