Доступные операторы сложения в C # предназначены только для типов данных int
, uint
, long
и ulong
, поэтому в этом случае вы неявно приводите два экземпляра ushort
к int
, затем выполняете сложениеи затем возвращает int
, который не может быть неявно приведен к ushort
.
Из спецификации C # 4.0, раздел 7.8.4 Оператор сложения , вы можете проверить, что только следующееДоступны целочисленные операторы сложения:
int operator +(int x, int y);
uint operator +(uint x, uint y);
long operator +(long x, long y);
ulong operator +(ulong x, ulong y);
В том же разделе также указано:
Операнды преобразуются в типы параметров выбранного оператора, а тип результата -тип возврата оператора.
Что объясняет, почему это выражение приводит к int
.