Структуры и методы. Инициализация структур. Конструкторы в структурах. Свойства в структурах
Содержание
- Вопрос/ответ
- 1. Пример структуры, в которой объявлены методы
- 2. Как можно инициализировать поля (данные) структуры? Пример
- 3. Можно ли в структуре объявлять конструктор по умолчанию?
- 4. Можно ли в структуре объявлять деструктор?
- 5. Как в структуре объявить явно заданный конструктор? Пример
- 6. Пример структуры, содержащей свойства
- Связанные темы
Поиск на других ресурсах:
1. Пример структуры, в которой объявлены методы
Дана структура, которая описывает данные об абоненте в телефонном справочнике. Структура носит имя Telephone. В структуре реализовано 5 полей и 11 методов, которые оперируют этими полями. Также в структуре есть конструктор, который инициализирует значение полей структуры. Поля структуры объявлены как скрытые, то есть имеют идентификатор доступа private. Методы и конструктор имеют идентификатор доступа public и есть общедоступными.
Ниже приведен код такой структуры
struct Telephone { // поля структуры - скрытые private string number; // номер телефона private string name; // имя абонента private string surname; // фамилия абонента private string address; // адрес private int code; // почтовый код // конструктор, который инициализирует поля структуры public Telephone(string Number, string Name, string Surname, string Address, int Code) { // заполнение значений переменных - обязательно должны заполняться все поля структуры number = Number; name = Name; surname = Surname; address = Address; code = Code; } // методы доступа к полям структуры // чтение данных public string Get_Number() { return number; } public string Get_Name() { return name; } public string Get_Surname() { return surname; } public string Get_Address() { return address; } public int Get_Code() { return code; } // заполнение полей (данных) структуры public void Set_Number(string Number) { number = Number; } public void Set_Name(string Name) { name = Name; } public void Set_Surname(string Surname) { surname = Surname; } public void Set_Address(string Address) { address = Address; } public void Set_Code(int Code) { code = Code; } }
Пример использования методов структуры для оперирования данными структуры:
// демонстрация использования методов Telephone T1; // инициализация полей с помощью конструктора T1 = new Telephone("900293", "Johnson ", "John", "Moscow", 3902); string Number, Name, Surname, Address; int Code; Number = T1.Get_Number(); // Number = "900293" Name = T1.Get_Name(); // Name = "Johnson" Code = T1.Get_Code(); // Code = 3902 // Установить новое значение Number T1.Set_Number("777777"); Number = T1.Get_Number(); // Number = "777777" // Установить новое значение Code T1.Set_Code(12345); Code = T1.Get_Code(); // Code = 12345
⇑
2. Как можно инициализировать поля (данные) структуры? Пример
Для удобной инициализации полей данных в структуре можно объявить явно заданный конструктор.
Пример. Реализация явно заданного конструктора для структуры типа Point, описывающей точку на координатной плоскости. Объявление структуры следующее.
struct Point { public int x, y; // явно заданный конструктор public Point(int nx, int ny) { x = nx; y = ny; } }
Вызов конструктора при объявлении экземпляра (объекта) структуры.
Point P = new Point(5, 6); // P.x = 5; P.y = 6
⇑
3. Можно ли в структуре объявлять конструктор по умолчанию?
Конструктор по умолчанию или конструктор без параметров нельзя объявлять в структуре. Для всех структур система определяет конструктор по умолчанию автоматически. Поэтому нет потребности в дополнительном объявлении конструктора по умолчанию.
⇑
4. Можно ли в структуре объявлять деструктор?
В структуре объявлять деструктор нельзя.
⇑
5. Как в структуре объявить явно заданный конструктор? Пример
В данном примере реализована структура типа Date, в которой есть конструктор, который инициализирует поля структуры значениями.
struct Date { public int day; // число public int month; // месяц public int year; // год public Date(int nday, int nmonth, int nyear) { day = nday; month = nmonth; year = nyear; } }
Дале приводится пример использования такого конструктора в обработчике события
private void button3_Click(object sender, EventArgs e) { Date d = new Date(2, 3, 2001); // вызвать конструктор // вывод полей структуры на форму label1.Text = d.day.ToString(); label2.Text = d.month.ToString(); label3.Text = d.year.ToString(); }
⇑
6. Пример структуры, содержащей свойства
Чтобы использовать свойства в структуре, нужно чтобы экземпляр структуры создавался с помощью оператора new.
Пусть в некотором классе объявлена структура, описывающая точку на координатной плоскости. Структура имеет:
- две внутренние переменные x, y;
- метод SetXY(), устанавливающий новые значения в переменные x, y;
- два свойства X, Y. Эти свойства обеспечивают чтение (get) и запись (set) внутренних переменных x, y.
// структура, которая описывает точку на координатной плоскости struct Point { int x, y; public void SetXY(int nx, int ny) { x = nx; y = ny; } // свойство X public int X { get { return x; } set { x = value; } } // свойство Y public int Y { get { return y; } set { y = value; } } }
Ниже приведено использование структуры Point из программного кода некоторого метода класса.
// структура инициализируется оператором new Point P = new Point(); // записать в переменные x, y значения 25, 30 с помощью свойств P.X = 25; P.Y = 30; int t; t = P.Y; // t = 30
Важно здесь, чтобы экземпляр структуры создавался с использованием оператора new.
⇑
Связанные темы
- Структуры. Общие понятия. Тип структуры. Структурная переменная. Модификаторы доступа к структурной переменной. Примеры использования структур в программе
- Использование массивов в структурах. Массивы структур. Вложенные структуры. Копирование структур
- Интерфейсы. Использование интерфейсов в C#