У всех программистов рано или поздно появляется момент, когда стандартных типов данных не достаточно, либо их использование не удобно. На этот случай, в большинстве языков программирования и в C# в том числе, есть так называемые пользовательские типы данных. В C# их может быть даже несколько видов.
Перечисления Enum
Как не трудно догадаться перечисление - это по сути именованный массив констант. Приведу основные способы объявления перечислений.
enum Days { Sun, Mon, Tue, Wed, Thu, Fri, Sat }; Days[] arr = new Days[500]; arr[0] = Days.Sun; for (int i = 0; i < 7; i++) { if (i == (int)Days.Fri) MessageBox.Show("Пятница"); }
Несколько комментариев. В первой строке объявляется перечисление Days. Его элементам будут автоматически присвоены значения базового типа, а именно, числовые значения начиная от 0 и до 6. Затем объявляется массив, содержащий 500 элементов пользовательского типа Days.
Обратите внимание: Чтобы сравнивать перечисление с базовыми типами, перечисление необходимо явно преобразовать, что и сделано в 6-й строке примера.
Следующий пример демонстрирует как задать перечислению нужную нам индексацию.
enum CarOptions { SunRoof = 50, Spoiler = 30, FogLights = 100, TintedWindows = 75 }
Структуры struct
Удобная вещь, когда нужно объединить разные базовые типы в одну группу и затем использовать ее, например, в массивах.
public struct Book { public string title; public decimal price; public long pages; } Book[] books = new Book[5000]; for (int i = 0; i < 10; i++) { books[i].title = "Книга " + i.ToString(); books[i].price = i * 10; }
Структуры могут также содержать конструкторы, константы, поля, методы, свойства, индексаторы, операторы, события и вложенный типы. Однако, если нужно использовать несколько таких типов, рекомендуется использовать class.
Пример структуры с конструктором.
public struct CoOrds { public int x, y; public CoOrds(int p1, int p2) { x = p1; y = p2; } } class TestCoOrds { static void Main() { CoOrds coords1 = new CoOrds(); CoOrds coords2 = new CoOrds(10, 10); CoOrds coords3; coords3.x = 10; coords3.y = 20; } }
p.s. Статья еще не завершена и будет еще дополняться и дорабатываться.
Комментарии к статье:
Добавить комментарий: