2012-05-04 5 views
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に違いはありますか?動作の相違点

+1

ILを「ildasm」で確認できます。 –

+0

ケース#2では、 '{}'の内部にコードを持たないことを目的としていますか?私はcase#2は論理的ではないと思います。式を使用してbに値を代入するだけです。 Case#2、またはそれより優れていますが、Odedの答えは意味があります。 – comecme

答えて

6

値がbの点では機能的に同じです。

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

はい、ケース1件の火災がイマイチnullの場合は、ケース2は唯一の火災であればありえないヌルとIF B = BOOL A:あなたはnullablesを使用しているので、

けれども、あなたはそれらの機能を使用する必要があります

1

それとも、書くことができる:

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

私は@オデッドの答えは最高の一つであると言っているが。