Вход/Регистрация
C# 4.0 полное руководство - 2011
вернуться

Шилдт Герберт

Шрифт:

Т ob; // объявить переменную типа Т

// Обратите внимание на то, что у этого конструктора имеется параметр типа public Gen(T о) { ob = о;

}

// Возвратить переменную экземпляра ob, которая относится к типу Т. public Т GetObO { return ob;

}

// Показать тип Т. public void ShowTypeO {

Console.WriteLine("К типу T относится " + typeof (Т));

}

}

// Продемонстрировать применение обобщенного класса, class GenericsDemo { static void Main {

// Создать переменную ссылки на объект Gen типа int.

Gen<int> iOb;

// Создать объект типа Gen<int> и присвоить ссылку на него переменной iOb iOb = new Gen<int> (102);

// Показать тип данных, хранящихся в переменной iOb. iOb.ShowType;

// Получить значение переменной iOb. int v = iOb.GetOb;

Console.WriteLine("Значение: " + v) ;

Console.WriteLine;

// Создать объект типа Gen для строк.

Gen<string> strOb = new Gen<string>("Обобщения повышают эффективность.");

// Показать тип данных, хранящихся в переменной strOb. strOb.ShowType;

// Получить значение переменной strOb. string str = strOb.GetOb ;

Console.WriteLine("Значение: " + str);

Эта программа дает следующий результат.

К типу Т относится' System.Int32 Значение: 102

К типу Т относится System.String

Значение: Обобщения повышают эффективность.

Внимательно проанализируем эту программу. Прежде всего обратите внимание на объявление класса Gen в приведенной ниже строке кода:

class Gen<T> {

где Т — это имя параметра типа. Это имя служит в качестве метки-заполнителя конкретного типа, который указывается при создании объекта класса Gen. Следовательно, имя Т используется в классе Gen всякий раз, когда требуется параметр типа. Обратите внимание на то, что имя Т заключается в угловые скобки (< >). Этот синтаксис можно обобщить: всякий раз, когда объявляется параметр типа, он указывается в угловых скобках. А поскольку параметр типа используется в классе Gen, то такой класс считается обобщенным.

В объявлении класса Gen можно указывать любое имя параметра типа, но по традиции выбирается имя Т. К числу других наиболее употребительных имен параметров типа относятся V и Е. Вы, конечно, вольны использовать и более описательные имена, например TValue или ТКеу. Но в этом случае первой в имени параметра типа принято указывать прописную букву Т.

Далее имя Т используется для объявления переменной ob, как показано в следующей строке кода.

Т ob; // объявить переменную типа Т

Как пояснялось выше, имя параметра типа Т служит меткой-заполнителем конкретного типа, указываемого при создании объекта класса Gen. Поэтому переменная ob будет иметь тип, привязываемый к Т при получении экземпляра объекта класса Gen. Так, если вместо Т указывается тип string, то в экземпляре данного объекта переменная ob будет иметь тип string.

А теперь рассмотрим конструктор класса Gen.

public Gen(T о) { ob = о;

}

Как видите, параметр о этого конструктора относится к типу Т. Это означает, что конкретный тип параметра о определяется типом, привязываемым к Т при создании объекта класса Gen. А поскольку параметр о и переменная экземпляра ob относятся к типу Т, то после создания объекта класса Gen их конкретный тип окажется одним и тем же.

  • Читать дальше
  • 1
  • ...
  • 268
  • 269
  • 270
  • 271
  • 272
  • 273
  • 274
  • 275
  • 276
  • 277
  • 278
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: