Навігація
Головна
 
Головна arrow Інформатика arrow Об'єктно-орієнтоване програмування
< Попередня   ЗМІСТ   Наступна >

ОПЕРАЦІЇ ПРИСВОЄННІ

У C # присвоювання є операцією, яка може використовуватися в виразах. У вираженні, званому множинним привласненням , списку змінних присвоюється одне і те ж значення. наприклад:

х = у = z = w = (u + v + w) / (uvw);

При присвоєнні змінних різного типу виконується перетворення типів. Компілятор намагається виконати перетворення типу змінної, що стоїть праворуч, в тип змінної, що стоїть зліва.

Присвоєння змінної, що стоїть зліва (тип Т), значення змінної або результату обчислення виразу (типу Т1) можливо тільки в наступних випадках:

  • • якщо типи Т і Т1 збігаються;
  • • якщо тип Т є базовим (батьківським) типом для типу Т1 (відповідно до спадкуванням типів);
  • • якщо є неявне перетворення типу Т1 в тип Т;
  • • якщо вказано явне перетворення типу Т1 в тип Т;
  • • якщо в описі типу Т1 задано явне перетворення в тип Т (див. Розд. 4.9).

Так як всі класи в мові C # - вбудовані і певні користувачем - за визначенням є нащадками класу Object, то звідси і випливає, що змінним класу Object можна привласнювати вираження будь-якого типу.

Неявне перетворення типів

Для типів може бути неявне (implicit ) або задано явне (explicit) перетворення. Наприклад, для вбудованих арифметичних типів існує схема неявних перетворень, показана на рис. 3.4.

Неявне перетворення вбудованих типів

Мал. 3.4. Неявне перетворення вбудованих типів

Якщо на цій діаграмі є шлях (стрілками) від типу А до типу В, то це означає, що є неявне перетворення з типу А в тип В. Наприклад, з short в float. Всі інші перетворення між підтипами арифметичного типу існують, але можуть задаватися тільки явно, наприклад з float в int.

Явне перетворення типів

Для завдання явного перетворення типів використовується операція приведення до типу ( кастинг ), яка має вищий пріоритет і такий вигляд:

(Type) <вираз>

Вона задає явне перетворення типу, визначеного виразом , до типу, зазначеному в дужках. Наприклад: int i = (int) 2.99; // i = 2;

В даному випадку тип константи 2.99 (за замовчуванням - це тип double) перетворюється в тип int, шляхом обрізання дробової частини. Або, наприклад, якщо описані призначені для користувача типи Т і Р і для типу Т описано явне перетворення в тип Р, то можлива наступна запис:

Т у;

Р х = new Р (); у = (Т) х;

Слід зазначити, що є явні перетворення всередині арифметичного типу, але немає, наприклад, явного перетворення арифметичного типу в тип bool. наприклад:

double а = 5.0; int р = (int) a;

bool b = (bool) a; // помилка, такого перетворення немає!

У ряді випадків можна задати необхідне перетворення явно, використовуючи спеціальні методи перетворення, визначені в класі System.Convert, які забезпечують перетворення значення одного типу до значень інших типів (в тому числі значення строкового типу до значень вбудованих типів).

 
Якщо Ви помітили помилку в тексті позначте слово та натисніть Shift + Enter
< Попередня   ЗМІСТ   Наступна >
 
Дисципліни
Агропромисловість
Аудит та Бухоблік
Банківська справа
БЖД
Географія
Документознавство
Екологія
Економіка
Етика та Естетика
Журналістика
Інвестування
Інформатика
Історія
Культурологія
Література
Логіка
Логістика
Маркетинг
Медицина
Нерухомість
Менеджмент
Педагогіка
Політологія
Політекономія
Право
Природознавство
Психологія
Релігієзнавство
Риторика
Соціологія
Статистика
Техніка
Страхова справа
Товарознавство
Туризм
Філософія
Фінанси
Пошук