Иллюстрированный самоучитель по VB.NET




Проблемы с передачей объектных переменных по значению - часть 2


Представьте себе чемодан, к которому временно приделали вторую ручку. Вы перенесли чемодан за новую ручку на другое место; даже если теперь отсоединить ручку, чемодан все равно останется на новом месте.

В этой странной ситуации есть лишь одно исключение — когда исходный объект является неизменяемым (immutable). Из стандартных, постоянно используемых классов к этой категории относится только класс Stri ng. В этом случае передача по значению работает именно так, как положено, в чем нетрудно убедиться при помощи следующей программы:

Option Strict On Module Modulel Sub Main()

Dim A As String = "hello"

NoProblem(A)

Console.WriteLine("After passing by value the string is still " & A)

Console. ReadLine()

End Sub

Sub NoProblem(ByVal Foo As String)

Foo = "goodbye"

End Sub

End Module

BVB .NET существуют так называемые структурные типы (value types), к числу которых относятся обычные числа, даты и перечисляемые типы (программист также может определять собственные структурные типы, как будет показано далее в этой главе). Для структурных типов передача по значению работает вполне традиционно. Странная ситуация, описанная выше, возникает только при передаче по значению изменяемых ссылочных типов.




Содержание  Назад  Вперед