El siguiente código da como resultado el uso de la variable local no asignada "numberOfGroups" :
int numberOfGroups;
if(options.NumberOfGroups == null || !int.TryParse(options.NumberOfGroups, out numberOfGroups))
{
numberOfGroups = 10;
}
Sin embargo, este código funciona bien (aunque ReSharper dice que = 10
es redundante):
int numberOfGroups = 10;
if(options.NumberOfGroups == null || !int.TryParse(options.NumberOfGroups, out numberOfGroups))
{
numberOfGroups = 10;
}
¿Me falta algo o al compilador no le gusta mi ||
?
He reducido esto para dynamic
causar los problemas ( options
era una variable dinámica en mi código anterior). La pregunta sigue siendo, ¿por qué no puedo hacer esto ?
Este código no se 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
}
Sin embargo, este código sí :
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
}
No me di cuenta de dynamic
que sería un factor en esto.
out
parámetro. Ciertamente es interesante considerar qué código auxiliar debería producir el compilador para evitar el problema, o si eso es posible.
out
parámetro como entrada