Неужели этюд? :))))
От: Ellin Россия www.rsdn.ru
Дата: 17.09.09 12:16
Оценка: 7 (2)
Что напечатает:

static void Main(string[] args)
        {
            string vals = "ASDFG";
            int val1 = 10;
            int val2 = 11;
            Console.WriteLine(vals[1]+val1+":"+val2);
        }
Re: Неужели этюд? :))))
От: Jack128  
Дата: 17.09.09 12:23
Оценка: +1
Здравствуйте, 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>


все эти неявные преобразования — жопа.
Re: Неужели этюд? :))))
От: Ellin Россия www.rsdn.ru
Дата: 17.09.09 12:25
Оценка:
Ну и так:
 Console.WriteLine(vals[1]+val1.ToString()+":"+val2);
Re: Неужели этюд? :))))
От: Аноним  
Дата: 17.09.09 12:36
Оценка: +1
Здравствуйте, Ellin, Вы писали:

E>Неужели этюд? )

скорее баян, чем этюд
Re: Неужели этюд? :))))
От: nikov США http://www.linkedin.com/in/nikov
Дата: 17.09.09 12:41
Оценка:
Здравствуйте, Ellin, Вы писали:

вот похожий
Автор: nikov
Дата: 15.09.08

В некоторых случаях ReSharper даже показывает warning.
Re: Неужели этюд? :))))
От: pt4h Беларусь http://dzmitryhuba.blogspot.com/
Дата: 17.09.09 12:42
Оценка:
Здравствуйте, 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
Re[2]: Неужели этюд? :))))
От: Ellin Россия www.rsdn.ru
Дата: 17.09.09 12:47
Оценка:
Здравствуйте, pt4h, Вы писали:
P>93:11
Код буквы S помнишь? Гигант!

P>Эквивалентно ((vals[1]+val1)+":")+val2

Да, но ((vals[1]+val1.ToString())+":")+val2
вносит сумбур... т.е. vals[1] не интерпретируется как число, но уже как буква...
Re[3]: Неужели этюд? :))))
От: nikov США http://www.linkedin.com/in/nikov
Дата: 17.09.09 12:52
Оценка: 1 (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 (просто упаковка).
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.