O código a seguir resulta no uso da variável local não atribuída "numberOfGroups" :
int numberOfGroups;
if(options.NumberOfGroups == null || !int.TryParse(options.NumberOfGroups, out numberOfGroups))
{
numberOfGroups = 10;
}
No entanto, este código funciona bem (embora ReSharper diga que o = 10
é redundante):
int numberOfGroups = 10;
if(options.NumberOfGroups == null || !int.TryParse(options.NumberOfGroups, out numberOfGroups))
{
numberOfGroups = 10;
}
Estou perdendo algo ou o compilador não está gostando do meu ||
?
Eu reduzi isso para dynamic
causar os problemas ( options
era uma variável dinâmica no meu código acima). A questão ainda permanece, por que não posso fazer isso ?
Este código não compila:
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
}
No entanto, este código faz :
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
}
Eu não sabia que dynamic
isso seria um fator.
out
parâmetro. Certamente é interessante considerar qual código auxiliar o compilador deve produzir para evitar o problema, ou se isso é possível.
out
parâmetro como entrada