Poniższe wyniki kodowe w wykorzystania nieprzypisanych zmiennej lokalnej "numberOfGroups":Dlaczego ten warunek (null ||! TryParse) powoduje "użycie nieprzypisanej zmiennej lokalnej"?
int numberOfGroups;
if(options.NumberOfGroups == null || !int.TryParse(options.NumberOfGroups, out numberOfGroups))
{
numberOfGroups = 10;
}
Jednak ten kod działa poprawnie (choć ReSharper mówi = 10
jest zbędny):
int numberOfGroups = 10;
if(options.NumberOfGroups == null || !int.TryParse(options.NumberOfGroups, out numberOfGroups))
{
numberOfGroups = 10;
}
Am Brakuje mi czegoś lub kompilator nie lubi mojego ||
?
Zawęziłem to do dynamic
, powodując problemy (options
była zmienną dynamiczną w powyższym kodzie). Pozostaje pytanie, dlaczego nie mogę tego zrobić?
Ten kod nie kompilacji:
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
będzie czynnikiem w tej sprawie.
nie sądzę, że jest wystarczająco inteligentny wiedzieć, że nie używasz wartości przekazanej do twojego parametru "out" jako wejścia – Charleh
Gdzie jest błąd? Czy używasz 'numberOfGroups' * po * kodzie, który pokazałeś? Czy możesz zmienić pytanie, aby pokazać krótki, ale kompletny program demonstrujący problem? –
Podany tutaj kod nie demonstruje opisanego zachowania; działa dobrze. Proszę napisać kod, który * faktycznie demonstruje zachowanie, które opisujesz *, które możemy skompilować. Prześlij nam całą teczkę. –