• Microsoft .NET
  • C#.NET
  • Решение 11 распространенных проблем в многопоточном коде

.NET глазами дельфийца. C# - Структуры

ОГЛАВЛЕНИЕ

 

Структуры

Структуры в C# аналогичны записям в Delphi в том смысле, что являютсяданными, передаваемыми по значению, а не по ссылке.

На самом деле семантика структур в C# ближе к классам, за исключением двухосновных ограничений:

  • структуры не могут быть абстрактными или содержать абстрактные методы;
  • наследование от структур не поддерживается, в связи с чем методы структур не могут быть виртуальными.

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


struct Point {
public int x, y;
public Point(int x, int y) {
this.x = x;
this.y = y;
}
}

Использование структур может как повыситьпроизводительность программы (например, при размещении большого количествамелких объектов лучше использовать структуры), так и ухудшить ее (еслииспользуется структура, содержащая большие объемы данных, то при передаче ее вкачестве параметра будет выполняться лишнее копирование).

Существует эмпирическое правило: если объем данных меньше16 байт, то для их хранения лучше использовать структуру, если больше -класс.