0
class Program {

        static bool? a = null;
        static bool b = false;

        static void Main( string[] args ) {
            //1
            if( a!=null ) {
                b = (bool) a;
            }
            //2
            if( a!=null && (b=(bool) a) ) { }
        }
    }

案例#1 和案例#2 之间有什么区别吗?

4

3 回答 3

6

就将获得的价值而言b,它们在功能上是相同的。

但是,由于您使用的是可空值,因此您应该使用它们的功能:

if(a.HasValue)
   b = a.Value;
于 2012-05-04T13:45:39.610 回答
1

或者你可以写:

b = (a.HasValue) ? a.Value : b;

虽然我不得不说@Oded 的答案是最好的。

于 2012-05-04T13:47:37.267 回答
0

是的,如果 a isnt null 则案例 1 触发,案例 2 仅在 a isnt null AND 如果 b = bool a 时触发

于 2012-05-04T13:45:50.620 回答