निम्नलिखित कोड के परिणाम के बिना उपयोग किए गए स्थानीय वैरिएबल "numberOfGroups" :
int numberOfGroups;
if(options.NumberOfGroups == null || !int.TryParse(options.NumberOfGroups, out numberOfGroups))
{
numberOfGroups = 10;
}
हालाँकि, यह कोड ठीक काम करता है (हालाँकि, ReSharper का कहना है कि = 10यह बेमानी है):
int numberOfGroups = 10;
if(options.NumberOfGroups == null || !int.TryParse(options.NumberOfGroups, out numberOfGroups))
{
numberOfGroups = 10;
}
क्या मुझे कुछ याद आ रहा है, या संकलक मुझे पसंद नहीं कर रहा है ||?
मैंने इसे dynamicसमस्याओं के कारण सीमित कर दिया है ( optionsमेरे उपरोक्त कोड में एक गतिशील चर था)। सवाल अभी भी बना हुआ है, मैं ऐसा क्यों नहीं कर सकता ?
यह कोड संकलित नहीं करता है :
internal class Program
{
#region Static Methods
private static void Main(string[] args)
{
dynamic myString = args[0];
int myInt;
if(myString == null || !int.TryParse(myString, out myInt))
{
myInt = 10;
}
Console.WriteLine(myInt);
}
#endregion
}
हालाँकि, यह कोड करता है :
internal class Program
{
#region Static Methods
private static void Main(string[] args)
{
var myString = args[0]; // var would be string
int myInt;
if(myString == null || !int.TryParse(myString, out myInt))
{
myInt = 10;
}
Console.WriteLine(myInt);
}
#endregion
}
मुझे नहीं लगा कि इसमें dynamicकोई कारक होगा।
outपरम को असाइनमेंट की गारंटी नहीं देते हैं । यह विचार करना दिलचस्प है कि समस्या से बचने के लिए कंपाइलर को किस सहायक कोड का उत्पादन करना चाहिए, या यदि संभव हो तो।
outइनपुट के रूप में अपने परम में पारित मूल्य का उपयोग नहीं कर रहे हैं