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#)