Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Industrial programming >> Язык C

Структуры в C#: определение, особенности и отличия от классов

Что такое структура

Структура (struct) — это тип-значение (value type). Она позволяет одной переменной хранить связанные данные разных типов. Ключевое слово — struct.

Структуры используются для представления легковесных записей (record-like data).

Объявление структуры

struct Books
{
    public string Title;
    public string Author;
    public string Subject;
    public int BookId;
}

Использование структуры

Books book1;
book1.Title = "C Programming";
book1.Author = "Nuha Ali";
book1.Subject = "C Programming Tutorial";
book1.BookId = 6495407;

// Можно инициализировать через конструктор (если определён)
Books book2 = new Books { Title = "Telecom", Author = "Zara", Subject = "Billing", BookId = 6495700 };

Особенности структур в C#

Структура vs Класс

ХарактеристикаClass (класс)Struct (структура)
ТипReference typeValue type
НаследованиеПоддерживаетсяНе поддерживается (только интерфейсы)
Конструктор по умолчаниюМожно переопределитьНельзя объявлять (всегда неявный)
ДеструкторМожноНельзя
NullМожет быть nullНе может быть null (если не Nullable<T>)
ПрисваиваниеКопируется ссылкаКопируется значение (все поля)
ПроизводительностьНагрузка на GC, кучаСтек, нет GC, быстрее для малых объектов

Пример со свойствами и методами

using System;

struct Books
{
    private string title;
    private string author;
    private string subject;
    private int bookId;

    // Конструктор с параметрами
    public Books(string t, string a, string s, int id)
    {
        title = t; author = a; subject = s; bookId = id;
    }

    public void GetValues(string t, string a, string s, int id)
    {
        title = t; author = a; subject = s; bookId = id;
    }

    public void Display()
    {
        Console.WriteLine($"Title: {title}");
        Console.WriteLine($"Author: {author}");
        Console.WriteLine($"Subject: {subject}");
        Console.WriteLine($"Book_id: {bookId}");
    }
}

class Program
{
    static void Main()
    {
        Books book1 = new Books("C Programming", "Nuha Ali", "C Tutorial", 6495407);
        Books book2 = new Books();
        book2.GetValues("Telecom", "Zara Ali", "Billing", 6495700);

        book1.Display();
        book2.Display();
    }
}

Когда использовать структуру

Когда использовать класс

Record structs (C# 10+)

Для неизменяемых структур с value-семантикой равенства:

public readonly record struct Point(int X, int Y);

Язык C

  1. Структуры C++ против классов: практическое руководство для разработчиков встроенных систем
  2. Семафоры в Nucleus RTOS: Утилитарные сервисы и структуры данных
  3. Рецензия: «Оцифровывайся или умирай» — блупринт для IoT-драйвенной трансформации
  4. Сохранение человечности в эпоху разрушительных технологий
  5. Революция в хранилищах данных: магнитные наноструктуры с мантиями невидимости нового поколения
  6. Топ-17 книг по программированию для прокачки навыков кодинга в 2021 году
  7. Структуры данных в Java: основные классы и Collections Framework
  8. Структуры в C (struct): определение, инициализация, передача в функции, указатели и битовые поля
  9. typedef в C: создание псевдонимов типов, упрощение кода и отличия от #define
  10. Структуры данных в C++: массивы, структуры и эффективное программирование