Структуры и классы: сходства и различия
Структуры и классы в 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# — эффективный способ описания небольших объектов с ограниченным функционалом. Они отличаются от классов облегченным синтаксисом и лучшей производительностью. Выбор между структурой и классом зависит от сложности и размера объекта.