* При перепечатке материалов ссылка на www.SeoLiga.ru обязательна!
Применение переменных ссылочных типов
7 февраля 2009
Переменная, объявленная с типом значения, содержит все данные, которые пред- ставляет этот тип, тогда как переменная ссылочного типа содержит ссылку на не- который объект — это принципиальное отличие между типами значения и ссылоч- ными типами. Рассмотрим следующий пример; Visual Basic .NET
Dim x, у As Integer x = 15 у = x x = 30 Каково значение у? Visual C# int x, у; х = 15; У = х; х = 30; // Каково значение у? Здесь создаются две целочисленные переменные: х и у. Переменной х присваи- вается значение 15, после чего ее значение присваивается переменной >•. В завер- шение х присваивается значение 30. А каково значение у? Ответ кажется очевид- ным: 15. Так какхи у — разные переменные, модификация одной из них никак не влияет на другую. При исполнении команды у=х значение переменной х копирует- ся в у, между этими переменными больше нет никакой связи. Со ссылочными типами все иначе. Рассмотрим пример, аналогичный преды- дущему, но использующий переменные ссылочного типа (Form) вместо типа зна- чения: Visual Basic .NET Dim x, у as System.Windows.Forms.Form x = New System.Windows.Forms.Form () x.Text = "This is Form 1" у = x x.Text - "This is Form 2" ' Какое значение вернет у.Text? Visual C# System.Windows.Forms.Form x,y; x = new System.Windows.Forms.Form (); x.Text - "This is Form 1"; у = x; x.Text = "This is Form 2"; // Какое значение вернет у.Text? Какое значение вернет y.Texft На этот раз ответ не столь очевиден. Поскольку System. Windows.Forms.Form — это ссылочный тип, переменная х не содержит фор- му, в действительности она хранит лишь ссылку на экземпляр формы. При испол- нении команды х=у исполняющая среда копирует эту ссылку из хв у, после чего переменная у ссылается на тот же экземпляр формы, что и переменная х. Посколь- ку обе переменные ссылаются на один и тот же экземпляр объекта, они возвраща- ют одинаковые значения свойств объекта, который они представляют, то есть у. Text вернет «This is Form 2».