मैं अपने संकलित सी # कोड को पढ़ने की कोशिश कर रहा हूं।सी #, अजीब अनुकूलन
using(OleDbCommand insertCommand = new OleDbCommand("...", connection))
{
// do super stuff
}
लेकिन:
यह मेरा कोड है!
हम सभी जानते हैं कि एक का उपयोग कर इस में अनुवाद किया जाता है:
{
OleDbCommand insertCommand = new OleDbCommand("...", connection)
try
{
//do super stuff
}
finally
{
if(insertCommand != null)
((IDisposable)insertCommand).Dispose();
}
}
(के बाद से OleDbCommand एक संदर्भ प्रकार है)।
लेकिन जब मैं अपने विधानसभा डिकंपाइल (.NET 2.0 के साथ संकलित) मैं Resharper में यह मिलता है:
try
{
insertCommand = new OleDbCommand("", connection);
Label_0017:
try
{
//do super stuff
}
finally
{
Label_0111:
if ((insertCommand == null) != null)
{
goto Label_0122;
}
insertCommand.Dispose();
Label_0122:;
}
मैं इस लाइन के बारे में बात कर रहा हूँ: if ((insertCommand == null) != null)
।
मान लें कि सम्मिलित है COMOM IS शून्य है। फिर पहला भाग सच हो जाता है। (true != null)
true
देता है। तो फिर निपटान अभी भी छोड़ दिया गया है? अजीब, बहुत अजीब।
अगर मैं दृश्य स्टूडियो में इस पेस्ट, Resharper पहले से ही मुझे चेतावनी देते हैं: अभिव्यक्ति हमेशा सच है ...
धन्यवाद!
-Kristof
मैंने प्रश्न को गलत तरीके से पढ़ा है, इसलिए मेरा जवाब हटा दिया गया है। मुझे लगता है कि रिशेर्पर में एक बग है, मैं कुछ अन्य डिकंपेलर की कोशिश करने का सुझाव दूंगा और देख सकता हूं कि आपको क्या परिणाम मिलते हैं। –
डिकंपाइल करने के लिए आप किस टूल का उपयोग करते हैं ?? शायद आपको एक और –