Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > .NET для новичков > Почему такой код работает?


Автор: C4EBA 1.6.2010, 11:30
Код

     private void button1_Click(object sender, EventArgs e)
     {
      double S=double.Parse(textBox1.Text);
      double D=double.Parse(textBox2.Text);
      double E=S/D;
      MessageBox.Show("Сейчас значение в textBox1: "+S+"\n"+
                      "в textBox2: "+D+"\n"+
                      "их частное: "+E);
     }


Почему этот код работает? То есть почему в сообщении не нужно преобразование double в string, чтобы сообщение выглядело, например, так:

Код

      MessageBox.Show("Сейчас значение в textBox1: "+S.ToString("F4")+"\n"+
                "в textBox2: "+D.ToString("F4")+"\n"+
                "их частное: "+E.ToString("F4"));


Я читал о неявном преобразовании типов (скажем, int в double), но о неявном преобразовании double в string не нашел. Плохо искал или дело в чем-то другом?

Автор: A5uKa 1.6.2010, 11:46
Ну в сложении строк любой тип неявно прикидывается строкой .

Автор: C4EBA 1.6.2010, 12:02
Хм, вот как оно... Значит, я мало читал. Спасибо за ответ.

Автор: A5uKa 1.6.2010, 12:09
Я на 5 ой странице книги Брукса  smile , а там много страниц  smile 

Автор: C4EBA 1.6.2010, 12:13
Очень недурственные знания после прочтения пяти страниц книги. 
Конечно, если эта книга первая.  smile  Пойду читать буквы...

Автор: mrbrooks 1.6.2010, 12:44
C4EBA, полагаю, что просто при использовании оператора + для класса String вызывается его статический перегруженный метод String.Concat , где в сигнатуре множество Object

Автор: jorikdima 1.6.2010, 14:18
Неявно вызывается ToString для каждого объекта.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)