'A'
является char
и имеет значение 65
Однако есть техническое объяснение того, почему это приводит к целому числу (а не к строковому представлению символа), его можно найти в спецификациях ECMA C #
12.15 Условный оператор
Второй и третий операнды x и y оператора?: управляют
тип условного выражения.
- Если x имеет тип X, а y имеет тип Y, тогда
- Если X и Y одинакового типа, то это тип условного выражения.
- В противном случае, если неявное преобразование (§11.2) существует из X в Y, но не из Y в X, тогда Y является типом условного выражения.
- В противном случае, если неявное преобразование перечисления (§11.2.4) существует из X в Y, тогда Y является типом условного выражения.
- В противном случае, если неявное преобразование перечисления (§11.2.4) существует из Y в X, тогда X является типом условного выражения.
- В противном случае, если неявное преобразование (§11.2) существует из Y в X, но не из X в Y, тогда X является типом условного выражения.
- В противном случае тип выражения не может быть определен и возникает ошибка времени компиляции.
- Если только один из x и y имеет тип, и оба x и y неявно преобразуются в этот тип, то это тип условного
выражение.
- В противном случае тип выражения не может быть определен, и возникает ошибка времени компиляции
* ** 1045 1046 * Пример * ** 1047 1048 *
char Y = 'A';
int X = Y;
Y = X; // compiler error
Короче говоря, не существует неявного преобразования из int
в char
, но есть от char
до int
, поэтому имеет смысл, чтобы тип результата был int