操作有点不同

本文关键字:操作 | 更新日期: 2023-09-27 18:33:16

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

操作有点不同

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

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

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

你可以写:

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

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

是的,如果 a 不为 null,则触发情况 1,案例 2 仅在 a 不为空时触发,如果 b = 布尔值 a