Почему это (null || !TryParse) условие приводит к «использованию неназначенной локальной переменной»?C#

Место общения программистов C#
Ответить
Anonymous
 Почему это (null || !TryParse) условие приводит к «использованию неназначенной локальной переменной»?

Сообщение Anonymous »

Следующий код приводит к использованию неназначенной локальной переменной "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;
}
Я что-то упустил или компилятору не нравится мой ||?
Я сузил это до динамического< /code> вызывает проблемы ( была динамической переменной в моем коде выше). Остается вопрос: почему я не могу этого сделать?
Этот код не компилируется:

Код: Выделить всё

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
}
Я не предполагал, что динамический будет иметь значение в этом.


Подробнее здесь: https://stackoverflow.com/questions/163 ... gned-local
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»