Что напечатает:
static void Main(string[] args)
{
string vals = "ASDFG";
int val1 = 10;
int val2 = 11;
Console.WriteLine(vals[1]+val1+":"+val2);
}
Здравствуйте, Ellin, Вы писали:
E>Что напечатает:
E>E>static void Main(string[] args)
E> {
E> string vals = "ASDFG";
E> int val1 = 10;
E> int val2 = 11;
E> Console.WriteLine(vals[1]+val1+":"+val2);
E> }
E>
все эти неявные преобразования — жопа.
Ну и так:
Console.WriteLine(vals[1]+val1.ToString()+":"+val2);
Здравствуйте, Ellin, Вы писали:
E>Неужели этюд? )
скорее баян, чем этюд
Здравствуйте, Ellin, Вы писали:
вот похожийАвтор: nikov
Дата: 15.09.08
В некоторых случаях ReSharper даже показывает warning.
Здравствуйте, Ellin, Вы писали:
E>Что напечатает:
E>E>static void Main(string[] args)
E> {
E> string vals = "ASDFG";
E> int val1 = 10;
E> int val2 = 11;
E> Console.WriteLine(vals[1]+val1+":"+val2);
E> }
E>
93:11
Эквивалентно ((vals[1]+val1)+":")+val2
Здравствуйте, pt4h, Вы писали:
P>93:11
Код буквы S помнишь?
Гигант!
P>Эквивалентно ((vals[1]+val1)+":")+val2
Да, но ((vals[1]+val1.ToString())+":")+val2
вносит сумбур... т.е. vals[1] не интерпретируется как число, но уже как буква...
Здравствуйте, Ellin, Вы писали:
P>>93:11
E>Код буквы S помнишь? Гигант!
Достаточно помнить алфавит и 'A' == 65
E>Да, но ((vals[1]+val1.ToString())+":")+val2
E>вносит сумбур... т.е. vals[1] не интерпретируется как число, но уже как буква...
Потому что выбираются разные операторы:
int operator+(int x, int y)
string operator+(object x, string y)
Соответственно, в одном случае приведение к int, а в другом — к object (просто упаковка).