s ="Владимир Петров
s1 =" Возраст: uх = 27;
s = s + s1 + uх. ToString ();
s1 =" Зарплата: "; dy = 2700.50;
s = s + s1 + dy;
WhoIsWho("s",s);
}
Рис. 4.3.
Здесь для переменной их метод был вызван явно, а для переменной
Преобразования из строкового типа в другие типы, например, в арифметический, должны выполняться явно. Но явных преобразований между арифметикой и строками не существуют. Необходимы другие механизмы, и они в C# имеются. Для этой цели можно использовать соответствующие методы класса Convert библиотеки FCL, встроенного в пространство имен
///
/// Демонстрация преобразования строки в данные различного типа.
///
public void FromStringTest()
{
s ="Введите возраст";
Console.WriteLine (s);
s1 = Console.ReadLine();
ux = Convert.ToUInt32(s1);
WhoIsWho ("Возраст: ",ux);
s ="Введите зарплату";
Console.WriteLine(s);
s1 = Console.ReadLine();
dy = Convert.ToDouble (s1);
WhoIsWho("Зарплата: ",dy);
}
Этот пример демонстрирует ввод с консоли данных разных типов. Данные, читаемые с консоли методом
На рис. 4.4 показаны результаты вывода и ввода данных с консоли при работе этой процедуры.
Рис. 4.4.
Класс Convert, определенный в пространстве имен
Методы класса Convert поддерживают общий способ выполнения преобразований между типами. Класс Convert с одержит 15 статических методов вида
3.1. Единственным исключением является тип
Существует возможность преобразования к системному типу
// System type: DateTime
System.DateTime dat = Convert.ToDateTime("15.03.2003");
Console.WriteLine("Date = {0}", dat);
Результатом вывода будет строка:
Date = 15.03.2003 0:00:00
Все методы
Кроме методов, задающих преобразования типов, в классе Convert имеются и другие методы, например, задающие преобразования символов Unicode в однобайтную кодировку ASCII, преобразования значений объектов и другие методы. Подробности можно посмотреть в справочной системе.
Проверяемые преобразования
Уже упоминалось о том, что при выполнении явных преобразований могут возникать нежелательные явления, например, потеря точности. Я говорил, что вся ответственность за это ложится на программиста, и легче ему от этого не становится. А какую часть этого бремени может взять на себя язык программирования? Что можно предусмотреть для обнаружения ситуаций, когда такие явления все-таки возникают? В языке C# имеются необходимые для этого средства.