Публикации
Публикации  »  C#, C++

Пользовательские типы данных в C#

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

 

Категория: C#, C++

Комментарии к статье:

01.07.18   Гость yuri с нетерпением буду ждать продолжения спасибо

Добавить комментарий: