Wersja: Visual Studio Professional 2013 Update 4
Budowa param: Wolę 32-bit jest prawdąshort + short! = Short?
Nie rozumiem błąd w następujący kod C#:
short iCount = 20;
short iValue = iCount + (short)1;
dodając krótki do int odlewano do krótkich wyników w następujący błąd:
Cannot implicitly convert type 'int' to 'short'. An explicit conversion exists (are you missing a cast?)
powyższy błąd, także w następującym przypadku, jest całkowicie poprawny tutaj:
short iCount = 20;
short iValue = iCount + 1;
Poniższy obejście usuwa błąd:
short iCount = 20;
short iValue = (short)(iCount + 1);
Więc dodatek w postaci „krótki + Int32 stała” najwyraźniej działa, a wynik jest Int32, który musi zostać oddane do krótkiego.
Czy istnieje wyjaśnienie, dlaczego pierwszy kod zakończył się niepowodzeniem lub czy jest to błąd kompilatora? (które nie mogę uwierzyć po 4 aktualizacjach)
Spójrz na to [Odpowiedź] (http://stackoverflow.com/questions/7504837/why-is-my-addition-of-2-shorts-causing-a-casting-compile-error-due- to-ints) – trebor
[Powiązane] (http://stackoverflow.com/a/3080381/335858) – dasblinkenlight
[Powiązane] (http://stackoverflow.com/questions/11853602/c-sharp-does-not-let- me-sum-two-shorts-to-a-short) – weston