Почему это (null ||! TryParse) приводит к «использованию неназначенной локальной переменной»?
Следующий код приводит киспользование неназначенной локальной переменной "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
будет фактором в этом.