Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
opi.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
1.81 Mб
Скачать

Тема 4. Важливі функціональні засоби мови c#. Автоматично реалізовані властивості.

Властивість C# дозволяє представляти фрагмент даних класу так, щоб дані були відокремлені від способу їх визначення та вилучення. У лістингу 1 міститься простий приклад класу на ім'я Product.

Лістинг 1. Визначення властивості

public class Product {

private string name;

public string Name {

get { return name;}

set { name = value; }

}

}

Властивість, назване Name, виділено напівжирним. Оператори блоку коду get (Званого одержувачем (getter)) виконуються при зчитуванні значення властивості, а оператори блоку set - під час надання значення властивості (присвоєне значення представлено спеціальною змінною value). Властивість використовується іншими класами так, неначе воно є полем (див. лістинг 2).

Лістинг 2. Використання властивості

using System;

class Program {

static void Main(string[] args) {

Product myProduct = new Product();

myProduct.Name = "Apple";

string productName = myProduct.Name;

Console.WriteLine("Product name: {0}", productName);

}

}

Використання властивостей краще ніж використання полів, оскільки оператори в блоках get і set можна змінювати, не змінюючи всі класи, що залежать від даної властивості. Але у випадку наявності класу зі значною кількістю однотипних описів властивостей код стає надмірно багатослівним.

Нам потрібно забезпечити гнучкість властивостей, але в даному випадку нам не потрібні спеціалізовані одержувачі і установники. Рішення полягає в застосуванні автоматично реалізованої властивості, яка також називається автоматичною властивістю. Використання автоматичної властивості дозволяє створити шаблон властивості на основі поля без визначення поля або зазначення коду в отримувачі чи установнику (див. лістинг 3).

Лістинг 3. Використання автоматично реалізованих властивостей

public class Product {

public int ProductID { get; set; }

public string Name { get; set; }

public string Description { get; set;}

public decimal Price { get; set; }

public string Category { set; get;}

}

При використанні автоматичних властивостей слід звернути увагу на декілька ключових моментів. По-перше, ми не визначаємо тіла блоків одержувача або установника. По-друге, ми не визначаємо поле, яке лежить в основі властивості. Обидва ці дії виконуються компілятором C # при збиранні класу. Застосування автоматичного властивості не відрізняється від звичайного властивості. Код, наведений у лістингу 2, як і раніше буде працювати. Використовуючи автоматичні властивості, ми позбавляємо себе від необхідності введення частини коду, створюємо більш читабельний код і при цьому зберігаємо гнучкість, запропоновану властивістю. Якщо коли-небудь буде потрібно змінити спосіб реалізації властивості, завжди можна повернутися до формату звичайного властивості. Припустимо, що потрібно змінити спосіб формування властивості, як показано в лістингу 4.

Лістинг 4. Повернення від автоматичного властивості до звичайного

public class Product {

private string name;

public int ProductID { get; set; }

public string Name {

get { return ProductID + name;}

set { name = ProductID + value; }

}

public string Description { get; set;}

public decimal Price { get; set; }

public string Category { set; get;}

}

На замітку! Зверніть увагу, що для повернення до звичайної властивості потрібно реалізувати і блок одержувача, і блок установника. Мова C# НЕ підтримує змішане застосування автоматичного і звичайного стилів одержувачів і установників.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]