Основы программирования на C#

Примеры преобразований


Перейдем к примерам. Класс Testing, содержащий примеры, представляет собой набор данных разного типа, над которыми выполняются операции, иллюстрирующие преобразования типов. Вот описание класса Testing:

using System; namespace Types { /// <summary> /// Класс Testing включает данные разных типов. Каждый его /// открытый метод описывает некоторый пример, /// демонстрирующий работу с типами. /// Открытые методы могут вызывать закрытые методы класса. /// </summary> public class Testing { /// <summary> /// набор скалярных данных разного типа. /// </summary> byte b = 255; int x = 11; uint ux = 1111; float y = 5.5f; double dy = 5.55; string s = "Hello!"; string s1 = "25"; object obj = new Object(); // Далее идут методы класса, приводимые по ходу // описания примеров }

В набор данных класса входят скалярные данные арифметического типа, относящиеся к значимым типам, переменные строкового типа и типа object, принадлежащие ссылочным типам. Рассмотрим закрытый (private) метод этого класса - процедуру WhoIsWho с формальным аргументом класса Object. Процедура выводит на консоль переданное ей имя аргумента, его тип и значение. Вот ее текст:

/// <summary> /// Метод выводит на консоль информацию о типе и /// значении фактического аргумента. Формальный /// аргумент имеет тип object. Фактический аргумент /// может иметь любой тип, поскольку всегда /// допустимо неявное преобразование в тип object. /// </summary> /// <param name="name"> - Имя второго аргумента</param> /// <param name="any"> - Допустим аргумент любого типа</param> void WhoIsWho(string name, object any) { Console.WriteLine("type {0} is {1} , value is {2}", name, any.GetType(), any.ToString()); }

Вот открытый (public) метод класса Testing, в котором многократно вызывается метод WhoIsWho с аргументами разного типа:

/// <summary> /// получаем информацию о типе и значении /// переданного аргумента - переменной или выражения /// </summary> public void WhoTest() { WhoIsWho("x",x); WhoIsWho("ux",ux); WhoIsWho("y",y); WhoIsWho("dy",dy); WhoIsWho("s",s); WhoIsWho("11 + 5.55 + 5.5f",11 + 5.55 + 5.5f); obj = 11 + 5.55 + 5.5f; WhoIsWho("obj",obj); }



Содержание раздела