Конструктор структуры
Интересно, что структура может быть инициализирована с использованием синтакси са, применяемого для инициализации класса,
public s t r u c t |
M y S t r u c t |
{ |
|
|
public |
i n t |
n ; |
public |
d o u b l e d; |
}
HyStruct ms = new M y S t r u c t ( ) ; // И с п о л ь з о в а н и е new
Несмотря на внешний вид, такая инициализация не приводит к выделению памяти
вотдельной области — она всего лишь обнуляет поля п и d.
Вы можете создать собственный конструктор, выполняющий какие-то другие дейст
вия. Рассмотрим следующий исходный текст:
public |
s t r u c t |
T e s t |
|
( |
|
|
|
|
|
; private |
i n t |
n; |
|
|
public |
T e s t |
( i n t n ) |
|
{ |
|
|
|
|
|
t h i s . n = |
n; |
|
|
public |
c l a s s |
P r o g r a m |
|
{ |
|
|
|
|
|
public |
s t a t i c |
v o i d |
Main ( s t r i n g [ ] a r g s ) |
{ |
|
|
|
|
|
Test |
t e s t |
= |
new |
T e s t ( 1 0 ) ; |
Несмотря на свой внешний вид, объявление t e s t = new T e s t (10) ; не выделя ет память, а только инициализирует уже выделенную память для типов-значений. Об ратите внимание на использование круглых скобок, в отличие от массива, где скоб- ки—квадратные.
Методы структур
Структура может иметь члены экземпляра, включая методы и свойства. Она может иметь и статические члены. Статические члены структуры могут иметь инициализаторы, во нестатические члены (члены экземпляра) их иметь не могут. Обычно объект структу ры передается функции по значению, но может быть передан и по ссылке, если это спе
циальным |
образом указывается в вызове функции с помощью |
ключевого слова r e f . |
Структура |
не может наследовать класс (отличный от O b j e c t , |
который будет описан |
позже в данной главе) и не может наследоваться другими классами. Структура может реализовывать интерфейс.
Отличия между статическими членами и членами экземпляра описаны в гла ве 8, "Методы класса". В главе 7, "Функции функций", вы найдете информа цию о передаче функции аргументов по значению и по ссылке. Наследование рассматривается в главе 12, "Наследование".