Помощь в написании студенческих работ
Антистрессовый сервис

Структуры. 
Методы описания интерфейса в программной среде С#

РефератПомощь в написанииУзнать стоимостьмоей работы

Обратите внимание, когда одна структура присваивается другой, создается копия ее объекта. В этом заключается одно из главных отличий структуры от класса. Когда ссылка на один класс присваивается ссылке на другой класс, в итоге ссылка в левой части оператора присваивания указывает на тот же самый объект, что и ссылка в правой его части. А когда переменная одной структуры присваивается переменной… Читать ещё >

Структуры. Методы описания интерфейса в программной среде С# (реферат, курсовая, диплом, контрольная)

Как вам должно быть уже известно, классы относятся к ссылочным типам данных. Это означает, что объекты конкретного класса доступны по ссылке, в отличие от значений простых типов, доступных непосредственно. Но иногда прямой доступ к объектам как к значениям простых типов оказывается полезно иметь, например, ради повышения эффективности программы. Ведь каждый доступ к объектам (даже самым мелким) по ссылке связан с дополнительными издержками на расход вычислительных ресурсов и оперативной памяти.

Для разрешения подобных затруднений в С# предусмотрена структура, которая подобна классу, но относится к типу значения, а не к ссылочному типу данных. Т. е. структуры отличаются от классов тем, как они сохраняются в памяти и как к ним осуществляется доступ (классы — это ссылочные типы, размещаемые в куче, структуры — типы значений, размещаемые в стеке), а также некоторыми свойствами (например, структуры не поддерживают наследование). Из соображений производительности вы будете использовать структуры для небольших типов данных. Однако в отношении синтаксиса структуры очень похожи на классы.

Главное отличие состоит в том, что при их объявлении используется ключевое слово struct вместо class. Ниже приведена общая форма объявления структуры:

struct имя: интерфейсы {.

// объявления членов.

}.

где имя обозначает конкретное имя структуры.

Как и у классов, у каждой структуры имеются свои члены: методы, поля, индексаторы, свойства, операторные методы и события. В структурах допускается также определять конструкторы, но не деструкторы. В то же время для структуры нельзя определить конструктор, используемый по умолчанию (т.е. конструктор без параметров). Дело в том, что конструктор, вызываемый по умолчанию, определяется для всех структур автоматически и не подлежит изменению. Такой конструктор инициализирует поля структуры значениями, задаваемыми по умолчанию. А поскольку структуры не поддерживают наследование, то их члены нельзя указывать как abstract, virtual или protected.

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

Давайте рассмотрим пример использования структур:

using System;

namespace ConsoleApplication1.

{.

// Создадим структуру.

struct UserInfo.

{.

public string Name;

public byte Age;

public UserInfo (string Name, byte Age).

{.

this.Name = Name;

this.Age = Age;

}.

public void WriteUserInfo ().

{.

Console.WriteLine («Имя: {0}, возраст: {1}», Name, Age);

}.

}.

class Program.

{.

static void Main ().

{.

UserInfo user1 = new UserInfo («Alexandr», 26);

Console.Write («user1: «);

user1.WriteUserInfo ();

UserInfo user2 = new UserInfo («Elena», 22);

Console.Write («user2: «);

user2.WriteUserInfo ();

// Показать главное отличие структур от классов.

user1 = user2;

user2.Name = «Natalya» ;

user2.Age = 25;

Console.Write («user1: «);

user1.WriteUserInfo ();

Console.Write («user2: «);

user2.WriteUserInfo ();

Console.ReadLine ();

}.

}.

}.

Рис. 6.

Структуры. Методы описания интерфейса в программной среде С#.

Обратите внимание, когда одна структура присваивается другой, создается копия ее объекта. В этом заключается одно из главных отличий структуры от класса. Когда ссылка на один класс присваивается ссылке на другой класс, в итоге ссылка в левой части оператора присваивания указывает на тот же самый объект, что и ссылка в правой его части. А когда переменная одной структуры присваивается переменной другой структуры, создается копия объекта структуры из правой части оператора присваивания.

Поэтому, если бы в предыдущем примере использовался класс UserInfo вместо структуры, получился бы следующий результат:

Рис. 7.

Показать весь текст
Заполнить форму текущей работой