Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
CSharp_Prog_Guide.doc
Скачиваний:
16
Добавлен:
16.11.2019
Размер:
6.22 Mб
Скачать

Параметры универсального типа

В определении универсального типа или метода параметры типа представляют собой заполнитель для определенного типа, задаваемого клиентом при создании переменной универсального типа. Универсальный класс, такой как GenericList<T>, нельзя использовать "как есть", поскольку он является не типом а, скорее, чертежом типа. Для работы с GenericList<T> в клиентском коде необходимо объявить и создать конструируемый тип, указав в угловых скобках аргумент типа. Аргумент-тип для этого конкретного класса может быть любым типом, распознаваемым компилятором. Можно создать любое количество экземпляров конструируемых типов, и каждый из них может использовать разные аргументы типа, как показано далее.

--

В каждом экземпляре GenericList<T> каждое вхождение T в классе будет заменено во время выполнения аргументом типа. С помощью данной замены было создано три отдельных строго типизированных и эффективных объекта, использующих определение класса.

Рекомендации по именованию параметра типа

  • При именовании параметров универсальных типов используйте описательные имена, если только однобуквенное имя не является полностью понятным без пояснений, вследствие чего нет необходимости применять описательное имя.

---

  • Для типов с однобуквенными параметрами рекомендуется использовать "T" в качестве имени параметра типа.

---

  • К описательным именам параметров типа добавляйте префикс "T".

---

  • В имени параметра рекомендуется указывать ограничения, накладываемые на параметр типа. Например, параметр, предназначенный только для ISession, может называться TSession.

Namespaces

Namespaces are heavily used in C# programming in two ways. First, the .NET Framework uses namespaces to organize its many classes, as follows:

System.Console.WriteLine("Hello World!");

System is a namespace and Console is a class in that namespace. The using keyword can be used so that the complete name is not required, as in the following example:

using System;

Console.WriteLine("Hello");

Console.WriteLine("World!");

Second, declaring your own namespaces can help you control the scope of class and method names in larger programming projects. Use the namespace keyword to declare a namespace, as in the following example:

namespace SampleNamespace

{

class SampleClass

{

public void SampleMethod()

{

System.Console.WriteLine(

"SampleMethod inside SampleNamespace");

}

}

}

Namespaces Overview

Namespaces have the following properties:

  • They organize large code projects.

  • They are delimited by using the . operator.

  • The using directive obviates the requirement to specify the name of the namespace for every class.

  • The global namespace is the "root" namespace: global::System will always refer to the .NET Framework namespace System.

Пространства имен

В программировании на C# пространства имен используются с полной нагрузкой по двум направлениям. Во-первых, платформа .NET Framework использует пространства имен для организации большинства классов. Это выполняется следующим образом.

System.Console.WriteLine("Hello World!");

System — это пространство имен, а Console — класс в нем. Использование ключевого слова using может отменить необходимость полного имени, как показано в следующем примере.

using System;

Console.WriteLine("Hello");

Console.WriteLine("World!");

Во-вторых, объявление собственного пространства имен поможет в управлении областью действия имен классов и методов в крупных программных проектах. Для объявления пространства имен воспользуйтесь ключевым словом namespace, как показано в следующем примере.

---