Это не троичный оператор как таковой, это то, что символы могут быть неявно преобразованы в целые числа в c#, поэтому, столкнувшись со сценарием, когда троичное выражение имеет int и char и нуждается в "do if true" и " do if false, чтобы быть непротиворечивым, компилятор неявно преобразует char в int. целые числа не могут быть неявно преобразованы в символы, поэтому компилятор не будет go этот маршрут
int result = bool ? someChar : someInt;
char result = bool ? (char)someInt : someChar;
Они оба в порядке; один использует неявное преобразование someChar в int для достижения согласованности (согласие int) для троичного, другой использует явное приведение someInt к символу для достижения согласованности char
Первый результат (печать, в вашем случае ) int, второй приведет к символу. Вы также можете поиграть с этим:
int result = bool ? (char)someInt : someChar;
Явное преобразование int в char, троичные результаты в char, неявное преобразование в int при сохранении в результате.
Код ascii для X: 88