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

Константы

Классы и структуры могут объявлять константы в качестве членов. Константы — это значения, известные во время компиляции и не изменяющиеся. (Чтобы создать постоянное значение, инициализируемое во время выполнения, используется ключевое слово readonly.) Константы объявляются как поля с помощью ключевого слова const, располагаемого перед типом поля. Язык C# не поддерживает методы, свойства и события с ключевым словом const.

Константы должны инициализировать сразу после объявления. Например:

---

В этом примере константа months будет всегда иметь значение 12, и ее значение не может быть изменено даже самим классом. Константы должны иметь тип sbyte, byte, short, ushort, int, uint, long, ulong, char, float, double, decimal, bool или string, перечисление, либо ссылку, равную null.

Несколько констант одного типа можно объявить одновременно, например:

--

Используемое для инициализации константы выражение может ссылаться на другую константу, если при этом не создается циклическая ссылка. Например:

--

Константы могут быть отмечены модификаторами public, private, protected, internal или protected internal. Эти модификаторы доступа определяют порядок доступа к константе для пользователей класса.

Доступ к константам осуществляется, как если бы они были статическими полями, хотя для них и нельзя использовать ключевое слово static. В выражениях, которые не входят в класс, в котором определена константа, для доступа к ней необходимо использовать имя класса, точку и имя этой константы. Например:

int birthstones = Calendar.months;

Nested Types

A type defined within a class or struct is called a nested type. For example:

class Container

{

class Nested

{

Nested() { }

}

}

Regardless of whether the outer types is a class or a struct, nested types default to private, but can be made public, protected internal, protected, internal, or private. In the previous example, Nested is inaccessible to external types, but can be made public like this:

class Container

{

public class Nested

{

Nested() { }

}

}

The nested, or inner type can access the containing, or outer type. To access the containing type, pass it as a constructor to the nested type. For example:

public class Container

{

public class Nested

{

private Container m_parent;

public Nested()

{

}

public Nested(Container parent)

{

m_parent = parent;

}

}

}

Nested types can access private and protected members of the containing type, including any inherited private or protected members.

In the previous declaration, the full name of class Nested is Container.Nested. This is the name used to create a new instance of the nested class, as follows:

Container.Nested nest = new Container.Nested();