Библиотека книг по компьютерным технологиям
⇒ ⇒ Разработка Windows-приложений на Microsoft Visual Basic .NET и Microsoft Visual C# .NET. Учебный курс MCAD/MCSD
⇒ ⇒ ⇒ Глава 1. Введение в .NET Framework
⇒ ⇒ ⇒ ⇒ Занятие 2. Библиотека базовых классов .NET

Читать далее: Операторы Imports и using

Применение переменных ссылочных типов и типов значений

Переменная, объявленная с типом значения, содержит все данные, которые представляет этот тип, тогда как переменная ссылочного типа содержит ссылку на некоторый объект — это принципиальное отличие между типами значения и ссылочными типами. Рассмотрим следующий пример:

Visual Basic .NET

Dim x, y As Integer
x = 15
y = x
x = 30
' Каково значение y?

Visual C#

int x, y;
x = 15;
y = x;
x = 30;
// Каково значение y?

Здесь создаются две целочисленные переменные: x и y. Переменной x присваивается значение 15, после чего ее значение присваивается переменной y. В завершение x присваивается значение 30. А каково значение y? Ответ кажется очевидным: 15. Так как x и y — разные переменные, модификация одной из них никак не влияет на другую. При исполнении команды y = x значение переменной x копируется в y, между этими переменными больше нет никакой связи.

Со ссылочными типами все иначе. Рассмотрим пример, аналогичный предыдущему, но использующий переменные ссылочного типа (Form) вместо типа значения:

Visual Basic .NET

Dim x, y As System.Windows.Forms.Form
x = New System.Windows.Forms.Form
x.Text = "This is Form 1"
y = x
x.Text = "This is Form 2"
' Какое значение вернет y.Text?

Visual C#

System.Windows.Forms.Form x, y;
x = new System.Windows.Forms.Form();
x.Text = "This is Form 1";
y = x;
x.Text = "This is Form 2";
// Какое значение вернет y.Text?

Какое значение вернет y.Text? На этот раз ответ не столь очевиден. Поскольку System.Windows.Forms.Form — это ссылочный тип, переменная x не содержит форму, в действительности она хранит лишь ссылку на экземпляр формы. При исполнении команды x = y исполняющая среда копирует эту ссылку из x в y, после чего переменная y ссылается на тот же экземпляр формы, что и переменная x. Поскольку обе переменные ссылаются на один и тот же экземпляр объекта, они возвращают одинаковые значения свойств объекта, который они представляют, то есть y.Text вернет «This is Form 2»

Google
 
Рейтинг@Mail.ru
Сайт управляется системой uCoz