Ho scritto questo pezzo di codice:.NET Reflector non è in grado di riflettere correttamente sull'operatore a coalescenza nulla?
private Queue<int> EnsureQueue()
{
return _queue ?? (_queue = new Queue<int>(10));
}
e il riflettore mi dà:
private Queue<int> EnsureQueue()
{
if (this._queue == null)
{
}
return (this._queue = new Queue<int>(10));
}
Ovviamente, questo non è ciò che dice il codice originale. La riga (this._queue = new Queue<int>(10));
restituirà sempre un new Queue<int>(10)
anziché _queue
quando non è null
.
Si tratta di un bug nel .NET Reflector
o mi manca qualcosa? Il programma sembra comportarsi in modo corretto ...
EDIT -> Vedere la mia risposta
Il ?? l'operatore è zucchero sintattico, stai vedendo in che cosa lo sta traducendo il compilatore. –
@RonBeyer Ma l'output non è corretto, vero? – HerpDerpington
Puoi pubblicare l'IL grezzo? Probabilmente sarebbe molto più chiaro se vedessi da cosa stava cercando di tradurre il riflettore. Di solito trovo che JetBrains DotPeek sia un po 'più preciso di quello di Redgate, e sono contraria all'utilizzo di Redgate dopo che "hanno promesso" di mantenere Reflector libero, quindi ha iniziato a caricarsi in modo oltraggioso per questo. DotPeek è gratuito. –