5

私は、コードのこの作品を書いた:.NETリフレクタはヌル合体演算子を正しく反映できませんか?

private Queue<int> EnsureQueue() 
{ 
    return _queue ?? (_queue = new Queue<int>(10)); 
} 

をし、反射が私を与える:

明らか
private Queue<int> EnsureQueue() 
{ 
    if (this._queue == null) 
    { 
    } 
    return (this._queue = new Queue<int>(10)); 
} 

、これは元のコードが言うことではありません。行(this._queue = new Queue<int>(10));は、nullでない場合は_queueの代わりにnew Queue<int>(10)を返します。

これは.NET Reflectorのバグですか、それとも不足していますか?

private Queue<int> EnsureQueue() 
{ 
    return (this._queue ?? (this._queue = new Queue<int>(10))); 
} 

はにかなりくそ良いルックス:>これはリフレクターの私のコピーは、この方法で作るものです私の答え

+0

??演算子は構文的な砂糖ですが、コンパイラが何を翻訳しているのか見ています。 –

+0

@RonBeyerしかし、出力が正しくないですか? – HerpDerpington

+3

生ILを投稿できますか?反射鏡が翻訳しようとしているものを見れば、おそらくもっとはっきりしているでしょう。通常、私はJetBrains DotPeekがRedgateよりも正確で、Reflectorを無料にしておくと約束した後、Redgateを使用することに反対してから、激しく請求し始めました。 DotPeekは無料です。 –

答えて

3

を参照してください - プログラムは

EDIT ...正しく動作しているようです私。バージョン8.5.0.179の場合は、必ず更新してください。

+0

私は実際に同じバージョンを持っています:8.5.0.179(トライアル '??? !!!'(これは問題の原因ではないことを祈っています)) – HerpDerpington

+0

これはほとんどありません。たぶんあなたは良いスニペットを投稿するべきです、私は_queue変数を推測しなければなりませんでした。 –

+0

C#のバージョン、コンパイラのバージョン、特定の構文を逆コンパイルする方法など、リフレクタのオプションはありますか? –

関連する問題