logo
Разработка информационной системы автосервиса

2.3.2 Описание структуры данных

Классы и структуры являются двумя основными конструкциями системы общих типов CTS в платформе .NET Framework. Каждая по сути является структурой данных, инкапсулирующей набор данных и поведение, связанные как логическая единица. Данные и поведение являются членами класса или структуры, и в них включены методы, свойства, события и так далее.

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

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

Структура является типом значения. При создании структуры переменная, к которой она назначается, сохраняет фактические данные структуры. При назначении структуры новой переменной выполняется ее копирование. Поэтому новая переменная и исходная переменная содержат две отдельных копии одних данных.Изменения, внесенные в одну копию, не влияют на другую копию.

Пример класса Permission, используется для определения отдельного набора прав для отдельного пользователя:

public class Permissions : List<Permission>

{

public Permission this[string name]

{

get

{

return this.FirstOrDefault(tTemp => tTemp.name == name);

}

}

}

public class Permission

{

public string name;

public bool canRead;

public bool canEdit;

public bool canDelete;

public Permission(DataRow row)

{

name = row["ОбъектДоступа"].ToString();

canRead = (row["Чтение"].ToString() == "1");

canEdit = (row["Изменение"].ToString() == "1");

canDelete = (row["Удаление"].ToString() == "1");

}

}

}