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

Ініціалізатори об'єктів та колекцій.

Ще одним трудомістким завданням програмування є створення нового об'єкту і подальше присвоєння значень його властивостей, як показано в лістингу 5.

Лістинг 5. Створення та ініціалізація об'єкта через властивості

class Program {

static void Main(string[] args) {

Product myProduct = new Product();

myProduct.ProductID = 100;

myProduct.Name = "Kayak";

myProduct.Description = "A boat for one person";

myProduct.Price = 275M;

myProduct.Category = "Watersports";

ProcessProduct(myProduct);

}

private static void ProcessProduct(Product prodParam) {

//... оператори обробки товару

}

}

Щоб створити об'єкт Product і передати його методу ProcessProduct, потрібно виконати три дії: створити об'єкт, встановити значення параметрів, а потім викликати метод. Мова C# надає можливість скористатися засобом ініціалізатора об'єкта, який дозволяє виконати всі на одному кроці, як показано в лістингу 6.

Лістинг 6. Використання засобу інціалізатора об'єкта

class Program {

static void Main(string[] args) {

ProcessProduct( new Product() {

ProductID = 100, Name = "Kayak",

Description = "A boat for one person",

Price = 275M, Category = "Watersports"

} );

}

private static void ProcessProduct(Product prodParam) {

//... оператори обробки товару

}

}

Блок коду, укладений у фігурні дужки ({}), який слідує за конструктором Product, є ініціалізатором. Значення параметрів можна передати в ході процесу створення об'єкта. Результатом є екземпляр класу Product, який можна передати безпосередньо методом ProcessProduct – тобто нам не потрібно використовувати локальну змінну для посилання на об'єкт Product під час його ініціалізації. Ця ж функціональна можливість дозволяє ініціалізувати вміст колекцій і масивів в ході процесу конструювання, як показано в лістингу 7.

Лістинг 7. Ініціалізація колекцій і масивів

using System.Collections.Generic;

class Program {

static void Main (string[] args) {

string[] stringArray = { "Apple", "Orange", "Plum" };

List <int> intList = new List <int> { 10, 20, 30, 40 };

Dictionary <string, int> myDict = new Dictionary <string, int> {

{ "Apple", 10 },

{ "Orange", 20 },

{ "Plum", 30 }

};

}

}

Код в лістингу 7 демонструє створення і ініціалізацію масиву і двох класів з бібліотеки базової колекції. Цей засіб являє собою синтаксичну зручність – він робить використання C# більш приємним, не здійснює ніякого іншого впливу і не надає ніяких додаткових вигод.

Автоматичне виведення типу.

Ключове слово var мови C# дозволяє визначати локальну змінну без явної вказівки типу змінної, як показано в лістингу 8. Це називається виведенням типу або неявним зазначенням типу.

Лістинг 8. Використання виведення типу

var myVariable =

new Product {Name = "Kayak", Category = "Watersports", Price = 275M};

string name = myVariable.Name; // допустимий оператор

int count = myVariable.Count; // помилка компілятора

Суть не в тому, що змінна myVariable не має типу. Просто ми зажадали від компілятора, щоб він вивів тип з коду. Як показано в наступних операторах, компілятор дозволить викликати тільки члени виведеного класу – в даному випадку Product.

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