static void test(bool b)
{
int i = 1; char c = (char)65;
string s; if (b) s = "blubb" + i; else s = "blubb" + c;
string t = "blubb" + (b ? i : c);
Console.WriteLine(s + " == " + t);
}
Тест вызова (true) дает «blubb1 == blubb1».Неожиданное поведение тернарного оператора в C#
Тест вызова (false) дает «blubbA == blubb65».
Дополнительный вопрос
Отредактировано:
static void test(bool b)
{
int i = 1; char c = (char)65;
string s; if (b) s = "blubb" + i; else s = "blubb" + c;
string t = "blubb" + (b ? i : c);
string u = "blubb" + (b ? c : i);
Console.WriteLine(s + " == " + t + " == " + u);
}
Тест вызов (истина) дает "blubb1 == blubb1 == blubb65".
Тест вызова (false) дает «blubbA == blubb65 == blubb1».
Что объясняет это неожиданное поведение?
Вы, вероятно, будет лучше писать одно заявление в каждой строке, когда кодирование - это сделаю вашу жизнь намного легче отлаживать такие вещи! –