Le code suivant entraîne l' utilisation de la variable locale non attribuée "numberOfGroups" :
int numberOfGroups;
if(options.NumberOfGroups == null || !int.TryParse(options.NumberOfGroups, out numberOfGroups))
{
numberOfGroups = 10;
}
Cependant, ce code fonctionne bien (cependant, ReSharper dit que le = 10
est redondant):
int numberOfGroups = 10;
if(options.NumberOfGroups == null || !int.TryParse(options.NumberOfGroups, out numberOfGroups))
{
numberOfGroups = 10;
}
Est-ce que je manque quelque chose ou est-ce que le compilateur n'aime pas mon ||
?
J'ai réduit cela à la dynamic
cause des problèmes ( options
c'était une variable dynamique dans mon code ci-dessus). La question demeure, pourquoi je ne peux pas faire ça ?
Ce code ne compile pas :
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
}
Cependant, ce code fait :
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
}
Je n'avais pas réalisé que ce dynamic
serait un facteur.
out
paramètre. Il est certainement intéressant de considérer quel code d'assistance le compilateur devrait produire pour éviter le problème, ou si c'est même possible.
out
paramètre comme entrée