2016-06-22 4 views
1
私は(私は特定のメソッドがどのように動作するかを確認するために興味を持っていました)ILSPY経由 VideoFileWriterクラスアセンブリ AForge.Video.FFMPEGからを読んで、見つかった

この:バックブール値への変換ではなく整数にそのブールを行う理由は何なぜコンパイラはboolをintegerに変換し、bool自体を返すのではなくboolに戻しますか?

public bool IsOpen { 
    [return: MarshalAs(UnmanagedType.U1)] 
    get { 
     return ((this.data != null) ? 1 : 0) != 0; 
    } 
} 

ちょうどthis.data != nullをやりますか?

+2

JustDecompile – Martheen

+1

と比較したりDotPeekで提案する男性のための –

+0

感謝を試してみになるかもしれない合理的な実装がある – Jack

答えて

10

デコンパイルされたコードです。デコンパイラの不具合の可能性があります。ビットのために考えた後


、ここでは潜在的に同じコンパイルされたコード

public enum ConnectionState 
{ 
    Closed = 0, 
    Open = 1, 
    Opening = 2, 
    OtherStuff = 3, 
    AndSoOn = 4, 
} 

public bool IsOpen 
{ 
    get 
    { 
     ConnectionState state; 
     if (this.data != null) 
     { 
      state = ConnectionState.Open; 
     } 
     else 
     { 
      state = ConnectionState.Closed; 
     } 

     return state != ConnectionState.Closed; 
    } 
} 
+0

意味をなさない私は他のデコンパイラを試してみたところ、 'public bool IsOpen { get { object obj; if(this.data!= null) { obj = 1; } else { obj = null; } return(byte)obj; } } ' – Jack

関連する問題