У всех программистов рано или поздно появляется момент, когда стандартных типов данных не достаточно, либо их использование не удобно. На этот случай, в большинстве языков программирования и в 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. Статья еще не завершена и будет еще дополняться и дорабатываться.
Комментарии к статье:
Добавить комментарий: