Наступний код призводить до використання непризначеної локальної змінної "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
параметр, як вхід