об'єктні змінні
Розглянемо наступний фрагмент:
У ньому оголошуються і створюються дві змінні: thing і aRandomlnstance. Перша змінна містить посилання на тип Object, а друга - посилання на екземпляр класу Random. Наступна команда цілком допустима навіть в режимі жорсткої перевірки типів (Option Strict On), оскільки в VB.NET всі змінні в кінцевому рахунку є об'єктами:
З іншого боку, зворотне присвоювання (aRandomlnstance = thing) неприпустимо, оскільки не кожен об'єкт є екземпляром класу Random.
Примітка
Як буде показано в наступному розділі, спільним предком всіх типів VB.NET є тип Object. Саме тому в VB.NET будь-яку величину можна зберегти у змінній типу Object, а будь-який створений об'єкт підтримує методи класу Object. Наприклад, оскільки в класі Object визначений метод ToString. кожен клас дозволяє отримати строкове представлення об'єкту (корисність якого залежить від реалізації). Метод ToString автоматично викликається при використанні конструкцій виду Console.WriteLine (foo).
Якщо об'єктна змінна містить маніпулятор блоку пам'яті, в результаті операції привласнення другий об'єктної змінної буде присвоєно маніпулятор того ж блоку пам'яті. Але якщо ви забудете про те, що для роботи з одним блоком пам'яті використовуються дві різні змінні, це може привести до сумних наслідків - зміни в стані об'єкта, внесені через одну змінну, автоматично вплинуть на іншу змінну. Для прикладу розглянемо наступний фрагмент:
Динамічний масив А також буде містити рядок foo. тому виведене значення A.Count дорівнюватиме 1.
Примітка
Якщо ви знайомі з мовами, в яких широко використовуються покажчики (наприклад, С або Pascal), ви побачите, що у об'єктних змінних є багато спільного з покажчиками. Головна відмінність полягає в тому, що розіменування (dereferencing) об'єктних змінних відбувається автоматично і з ними не можуть виконуватися математичні операції.
Оскільки в VB.NET рядки і масиви є об'єктами, слід пам'ятати, що для роботи з ними використовуються об'єктні змінні. Як було показано в розділі 3, це дозволяє використовувати вбудовані можливості відповідних класів за допомогою синтаксису ".". Наприклад, при роботі з масивом через змінну аnАггау команда anArray.Sort () сортує масив надзвичайно ефективним методом швидкого сортування.
Примітка
На жаль, за все хороше доводиться платити. Передача об'єктних змінних за значенням пов'язана з певними труднощами, які тепер поширюються і на стандартні об'єкти на кшталт масивів. Дана тема розглядається в. розділі "Проблеми з передачею об'єктних змінних за значенням" цієї глави.
Як і в попередніх версіях VB, об'єктні змінні можуть використовуватися для отримання більш компактного запису. Наприклад, в наступному фрагменті визначається коротку назву аВох, яке буде використовуватися замість довгого МуForm.TextBoxl:
Подібні скорочення часто використовуються в поєднанні з ключовим словом With: