C# для новичков: Урок 25 — Структуры данных (struct)

Структуры и классы: сходства и различия

Структуры и классы в C# имеют много общего. Ключевое различие — масштаб описываемых объектов. Классы обычно используются для больших, сложных объектов (машина, робот, человек) с множеством характеристик (полей) и действий (методов).

Для простых объектов (книжка, салфетка) подходят структуры. Хотя класс для описания книжки допустим, структуры предлагают преимущества:

  • Облегченный синтаксис: Проще, чем у классов.
  • Эффективность памяти и обработки: Занимают меньше памяти и обрабатываются быстрее, чем аналогичные классы.

Поэтому, для оптимизации проекта (особенно игр или веб-сайтов), при описании небольших объектов лучше использовать структуры.

Создание структуры в C#

Структуру можно создавать в отдельном файле или внутри другого. Для лучшей организации кода рекомендуется отдельный файл.

Создадим файл Book.cs со структурой:

using System;

namespace Project
{
    public struct Book
    {
        public string Title;
        public string Author;
        public string Description;
        public short Pages;

        public void SetValues(string title, string author)
        {
            Title = title;
            Author = author;
        }

        public void PrintPlus()
        {
            Console.WriteLine($"{Author} написал книгу "{Title}"");
        }
    }
}

Здесь определена структура Book с полями Title, Author, Description, Pages и методами SetValues и PrintPlus. Модификатор доступа public для полей обеспечивает доступ к ним через методы.

Работа со структурой

В основном файле программы создадим объект структуры:

Book book = new Book();
book.SetValues("Идиот", "Федор Достоевский");
book.PrintPlus();

Создается объект book типа Book, устанавливаются значения полей методом SetValues и выводится информация методом PrintPlus. Результат: «Федор Достоевский написал книгу «Идиот»».

Предупреждения о неиспользуемых полях (Description, Pages) при компиляции — не ошибки и игнорируются.

Структуры в C# — эффективный способ описания небольших объектов с ограниченным функционалом. Они отличаются от классов облегченным синтаксисом и лучшей производительностью. Выбор между структурой и классом зависит от сложности и размера объекта.

Что будем искать? Например,программа