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

Использование структур

Тип struct подходит для создания несложных объектов, таких как Point, Rectangle и Color. Хотя точку можно реализовать и в виде класса, в некоторых случаях структуры оказываются более эффективными. Например, при объявлении массива из 1000 объектов Point потребуется выделить дополнительную память для хранения ссылок на все эти объекты, и структура в таком случае будет более экономичным решением. Поскольку в .NET Framework уже имеется объект с именем Point, мы назовем нашу структуру CoOrds.

--

Объявление конструктора по умолчанию (без параметров) для структуры является ошибкой. Конструктор по умолчанию всегда инициализирует члены структуры с помощью значений по умолчанию. Ошибкой также является инициализация поля экземпляра в структуре.

При создании объекта структуры с помощью оператора new объект создается и вызывается соответствующий конструктор. В отличие то классов структуры можно создавать без использования оператора new. Если оператор new не использовался, поля остаются без значений и объект нельзя использовать до инициализации всех полей.

В отличие от классов структуры не поддерживают наследование. Структура не может быть унаследованной от другой структуры или класса и не может быть основой для других классов. Однако структуры наследуют от базового класса Object . Структуры могут реализовывать интерфейсы; этот механизм полностью аналогичен реализации интерфейсов для классов.

В отличие от C++ класс нельзя объявить с помощью ключевого слова struct. В C# классы и структуры семантически различаются. Структура является типом значения, тогда как класс — это ссылочный тип.

Если требуется использовать семантику ссылочных типов, небольшие классы могут обрабатываться системой более эффективно, чем структуры.

Example 1

Description

This example demonstrates struct initialization using both default and parameterized constructors.

Code

public struct CoOrds

{

public int x, y;

public CoOrds(int p1, int p2)

{

x = p1;

y = p2;

}

}

// Declare and initialize struct objects.

class TestCoOrds

{

static void Main()

{

// Initialize:

CoOrds coords1 = new CoOrds();

CoOrds coords2 = new CoOrds(10, 10);

// Display results:

System.Console.Write("CoOrds 1: ");

System.Console.WriteLine("x = {0}, y = {1}", coords1.x, coords1.y);

System.Console.Write("CoOrds 2: ");

System.Console.WriteLine("x = {0}, y = {1}", coords2.x, coords2.y);

}

}

Output

CoOrds 1: x = 0, y = 0

CoOrds 2: x = 10, y = 10

Пример 1 Описание

В этом примере демонстрируется инициализация struct с помощью конструктора по умолчанию и с помощью конструктора с параметрами.

Код

---