Єдина Країна!

Головне меню

Наша кнопка

Українські уроки про ІТ

Друзі

Підтримка української армії



Змінні в C#
Написав Pavlo   
Неділя, 07 жовтня 2012 17:52
Переглядів: 7763

Змінні оголошуються за допомогою оператора наступної форми:

тип ім'я_змінної;

де тип - це тип даних, що зберігаються в змінній; а ім'я_змінної - це її ім'я. Оголосити можна змінну будь-якого дійсного типу, в тому числі і описаних вище типів значень(цілочисельний тип, символьний тип, булевий тип ). Важливо підкреслити, що можливості змінної визначаються її типом. Наприклад, змінну типу bool не можна використовувати для зберігання числових значень з плаваючою точкою. Крім того, тип змінної не можна змінювати протягом терміну її існування. Зокрема, змінну типу int не можна перетворити в змінну типу char.

 

Всі змінні в С# повинні бути оголошені до їх застосування. Це потрібно для того, щоб повідомити компілятор про тип даних, що зберігаються в змінній, перш ніж він спробує правильно скомпілювати будь-який оператор, в якому використовується змінна. Це дозволяє також здійснювати строгий контроль типів в С #.

 

Ініціалізація змінної

Задати значення змінної можна, зокрема, за допомогою оператора присвоювання. Крім того, задати початкове значення змінної можна при її оголошенні. Для цього після імені змінної вказуємо знак рівності (=) і присвоюємо значення. Нижче наведена загальна форма ініціалізації змінної:

тип ім'я_змінної = значення;

де значення - це конкретне значення, що задається при створенні змінної. Воно повинно відповідати зазначеному типу змінної.

Нижче наведені деякі приклади ініціалізації змінних.

int count = 10; // задати початкове значення 10 змінній count.

char ch = 'X1; // ініціалізувати змінну ch буквенним значенням X.

float f = 1.2F // змінна f ініціалізується числовим значенням 1,2.

Якщо дві або більше змінні одного і того ж типу оголошуються списком, що розділяється комами, то цим змінним можна задати, наприклад, початкове значення.

int а, b = 8, с = 19, d; // ініціалізувати змінні b і с

У даному прикладі ініціалізуються тільки змінні b і с.

 

Динамічна ініціалізація

У наведених вище прикладах в якості ініціалізаторів змінних використовувалися тільки константи, але в С# допускається також динамічна ініціалізація змінних за допомогою будь-якого виразу, дійсного на момент оголошення змінної. Нижче наведено приклад короткої програми для обчислення гіпотенузи прямокутного трикутника по довжині його протилежних сторін.

 
// Продемонструємо динамічну ініціалізацію.

using System;

class DynInit {
	static void Main() {
		// Довжина сторін прямокутного трикутника.
		double s1 = 4.0; 
		double s2 = 5.0;

		// Ініціалізувати змінну hypot динамічно
		double hypot = Math.Sqrt( (s1 * s1) + (s2 * s2) );
  
		Console.Write ("Гіпотенуза трикутника зі сторонами" +s1 + "і" + s2 + "дорівнює");
    
		Console.WriteLine("{0:#.###}.", hypot);
	}
}

 

Результат виконання цієї програми виглядає наступним чином.

Гіпотенуза трикутника зі сторонами 4 і 5 дорівнює 6.403

У даному прикладі оголошуються три локальні змінні: s1, s2 і hypot. Дві з них (s1 і s2) ініціалізувалися константами, а третя (hypot) динамічно ініціалізується обчислюваною довжиною гіпотенузи. Для такої ініціалізації використовується вираз, що визначене в методі Math.Sqrt(). Як пояснювалося вище, для динамічної ініціалізації придатний будь-який вираз, дійсний на момент оголошення змінної. А оскільки виклик методу Math.Sqrt() (або будь-якого іншого методу з бібліотеки) є дійсним на даний момент, то його можна використовувати для ініціалізації змінної hypot. Слід особливо підкреслити, що у виразі для ініціалізації можна використовувати будь-який елемент, дійсний на момент самої ініціалізації змінної, в тому числі виклики методів, інші змінні або літерали.

 

Неявно типізовані змінні

Як пояснювалося вище, всі змінні в С# повинні бути оголошені. Як правило, при оголошенні змінної спочатку вказується тип, наприклад int або bool, а потім ім'я змінної. Але починаючи з версії С # 3.0, компілятору надається можливість самому визначити тип локальної змінної, виходячи зі значення, яким вона ініціалізується. Така змінна називається неявно типізована.

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

var e = 2.7183;

У даному прикладі змінна е ініціалізується літералом з плаваючою точкою, який за замовчуванням має тип double, і тому вона відноситься до типу double. Якби змінна е була оголошена таким чином:

var e = 2.7183F;

то вона була б віднесена до типу float.

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

// Продемонструємо застосування неявно типізованих змінних.
using System;

class ImplicitlyTypedVar { 
	static void Main() {
		// Ці змінні типізовані неявно. Вони віднесені
		// до типу double, оскільки ініціалізували їх
		// вирази, які самі відносяться до типу double
		var s1 = 4.0; 
		var s2 = 5.0;
  
		// Отже, змінна hypot типізована неявно і
		// відноситься до типу double, оскільки результат,
		// отриманий методом Sqrt(), має тип double
		var hypot = Math.Sqrt( (s1 * s1) + (s2 * s2) );

		Console.Write ("Гіпотенуза трикутника зі сторонами" +s1 + "і" + s2 + "дорівнює");
		Console.WriteLine("{0:#.###}.", hypot);

		// Наступний оператор не може бути скомпільований,
		// оскільки змінна s1 має тип double і
		// їй не можна присвоїти десяткове значення
		// s1 = 12.2М;    // Помилка!
	}
}

 

Результат виконання цієї програми виявляється таким же, як і попередньої.

Важливо підкреслити, що неявно типізована змінна як і раніше залишається строго типізованою. Зверніть увагу на наступний закоментований рядок з наведеної вище програми.

// s1 = 12.2М; // Помилка!

Ця операція присвоювання недійсна, оскільки змінна s1 відноситься до типу double. Отже, їй не можна привласнити десяткове значення. Єдина відмінність неявно типізованої змінної від звичайної, явно типізованої змінної, в способі визначення її типу. Як тільки цей тип буде визначений, він закріплюється за змінною до кінця її існування. Це, зокрема, означає, що тип змінної s1 не може бути змінений під час виконання програми.

Неявно типізовані змінні впроваджені в С# не для того, щоб замінити собою звичайні оголошення змінних. Навпаки, неявно типізовані змінні призначені для особливих випадків, і самий примітний з них має відношення до мови інтегрованих запитів (LINQ). Таким чином, більшість оголошень змінних повинно і надалі залишатися явно типізованим, оскільки вони полегшують читання і розуміння вихідного тексту програми.

І останнє зауваження: одночасно можна оголосити лише одну неявно типізовану змінну. Тому оголошення

var s1 = 4.0, s2 = 5.0;   // Помилка!

є невірним і не може бути скомпільовано. Адже в ньому робиться спроба оголосити обидві змінні, s1 і s2, одночасно.

 

 

Перекладено з книги Герберт Шилдт С# 4.0:полное руководство


( 11 Проголосувало )
Коментарі
Добавити новий
Максим   |2015-02-26 18:58:43
Думаю, що потрібно починати p історії
становлення МП, та з категорії типів даних.
Адміністратор   |2015-03-08 21:04:16
avatar на жаль, це був вирваний з контексту,
переклад частинки книги, власне тому і не
було попереднього розгляду типів даних в C#
Залишити коментар
Ім`я:
e-mail:
 
Тема:
 
:angry::0:confused::cheer:B):evil::silly::dry::lol::kiss::D:pinch:
:(:shock::X:side::):P:unsure::woohoo::huh::whistle:;):s
:!::?::idea::arrow:
 
Введіть цей настирливий код
Русская редакция: www.freedom-ru.net & www.joobb.ru

3.26 Copyright (C) 2008 Compojoom.com / Copyright (C) 2007 Alain Georgette / Copyright (C) 2006 Frantisek Hliva. All rights reserved."

 

Ввійти



Підписка

Хто онлайн?

Немає
На даний момент 119 гостей на сайті

Український рейтинг
TOP.TOPUA.NET