struct (C# и Java)

Обновлен: Ноябрь 2007

C# поддерживает ключевое слово struct, которое появилось в C, но недоступно в Java. Можно представить struct как облегченный класс. Хотя structs может содержать конструкторы, константы, поля, методы, свойства, индексаторы, операторы и вложенные типы, это ключевое слово чаще всего используется для инкапсуляции группы связанных полей. Так как ключевое слово "struct" является типом значения, оно выделяется более эффективно, чем классы. В отличие от structs, классы не могут быть абстрактными и не поддерживают реализацию наследования.

В следующем примере выполняется инициализация struct с помощью ключевого слова new, вызывается конструктор по умолчанию, не содержащий параметров, и задаются члены экземпляра.

public struct Customer
{
    public int ID;
    public string Name;

    public Customer(int customerID, string customerName)
    {
        ID = customerID;
        Name = customerName;
    }
}

class TestCustomer
{
    static void Main()
    {
        Customer c1 = new Customer();  //using the default constructor

        System.Console.WriteLine("Struct values before initialization:");
        System.Console.WriteLine("ID = {0}, Name = {1}", c1.ID, c1.Name);
        System.Console.WriteLine();

        c1.ID = 100;
        c1.Name = "Robert";

        System.Console.WriteLine("Struct values after initialization:");
        System.Console.WriteLine("ID = {0}, Name = {1}", c1.ID, c1.Name);
    }
}

Результат

При компиляции и выполнении кода, приведенного выше, в результате выполнения видно, что переменные struct инициализированы по умолчанию. Переменная int инициализирована значением 0, а переменная string — пустой строкой:

Struct values before initialization:

ID = 0, Name =

Struct values after initialization:

ID = 100, Name = Robert

См. также

Задачи

Пример структур

Основные понятия

Руководство по программированию в C#

Ссылки

Структуры (Руководство по программированию на C#)

Другие ресурсы

Язык программирования C# для разработчиков на Java