Ben bu kod parçası yazdı:.NET Reflector, boş birleştirme işlecini doğru olarak yansıtmıyor mu?
private Queue<int> EnsureQueue()
{
return _queue ?? (_queue = new Queue<int>(10));
}
ve reflektör bana verir:
private Queue<int> EnsureQueue()
{
if (this._queue == null)
{
}
return (this._queue = new Queue<int>(10));
}
Açıkçası, bu orijinal kod ne diyor değil. (this._queue = new Queue<int>(10));
hattı, null
değilse _queue
yerine new Queue<int>(10)
döndürecektir.
Bu hata, .NET Reflector
veya bir hata mı eksik? Program
DÜZENLEME ... doğru davrandığı görülmektedir ->
The ?? operatör sözdizimsel şekerdir, derleyicinin onu çevirdiğini görüyorsunuz. –
@RonBeyer Ancak çıktı doğru değil, değil mi? – HerpDerpington
İşlenmemiş IL'ı gönderir misiniz? Reflektörün tercüme etmeye çalıştığını gördüyseniz, muhtemelen daha açık olacaktır. Genellikle JetBrains DotPeek'in Redgate'den biraz daha doğru olduğunu ve Reflector'u ücretsiz tutmaya söz verdikten sonra Redgate'i kullanmaya karşı olduğumu, bunun için de aşırı bir şekilde şarj olmaya başladığını görüyorum. DotPeek ücretsizdir. –