Poniższy kod powoduje użycie nieprzypisanej zmiennej lokalnej „numberOfGroups” :
int numberOfGroups;
if(options.NumberOfGroups == null || !int.TryParse(options.NumberOfGroups, out numberOfGroups))
{
numberOfGroups = 10;
}
Jednak ten kod działa dobrze (chociaż ReSharper twierdzi, że = 10
jest zbędny):
int numberOfGroups = 10;
if(options.NumberOfGroups == null || !int.TryParse(options.NumberOfGroups, out numberOfGroups))
{
numberOfGroups = 10;
}
Czy coś mi brakuje, czy kompilator nie lubi mojego ||
?
Zawęziłem to do dynamic
powodowania problemów ( options
była to zmienna dynamiczna w moim powyższym kodzie). Pozostaje pytanie, dlaczego nie mogę tego zrobić ?
Ten kod nie kompiluje się:
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
}
Jednak ten kod robi :
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
}
Nie zdawałem sobie sprawy, dynamic
że będzie to miało znaczenie.
out
parametru jako danych wejściowych