操作有点不同

时间:2012-05-04 13:43:54

标签: c# nullable

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之间有什么区别吗?

3 个答案:

答案 0 :(得分:6)

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

虽然,因为你使用的是nullables,你应该使用它们的功能:

if(a.HasValue)
   b = a.Value;

答案 1 :(得分:1)

或者你可以写:

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

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

答案 2 :(得分:0)

是的,如果a不为null,则触发案例1,如果a不为null,则仅触发案例2,如果b = bool a,则仅触发