Вы на правильном пути;речь идет о неявном преобразовании типов и строгой типизации.
Чтобы не перегружать вас всеми деталями, вы можете внести некоторые изменения в
short:
обратите внимание наToInt16
short number1;
//etc
number1 = Convert.ToInt16(Console.ReadLine());
байт:
Примечание: ToByte
byte number1;
//etc
number1 = Convert.ToByte(Console.ReadLine());
длинный
оставлено в качестве упражнения
Важно то, что, хотя все типы состоят из битов и в основном являются числами, C # хочет быть уверенным, что вы имеете в виду то, что говорите, и применяетвы должны использовать правильные type
.
Итак, почему это работает для
decimal
и т. д.?
Это потому, что C # считает, что неявно преобразует их, и поэтому компилятор сделает это за вас.
В ссылке вы можете видеть, что для int
(он же Int32
) предопределены следующие неявные преобразования:
//from | to
//int | long, float, double, or decimal
В связанной таблице вы также можете видеть, что другиедопускается обратный путь, от byte
до int
.
Большой урок: C # строго типизирован: если вы говорите, что это Int16 (он же короткий), вы должны использовать его только как
Int16
(а не
Int32
)
Счастливого кодирования; -)