Следующий код приводит к использованию неназначенной локальной переменной 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
параметру, в качестве входных данных