Страница: 1 |
Вопрос: переменные | Добавлено: 30.10.03 20:50 |
Автор вопроса: ![]() |
Public Class ClassA Public B As ClassB End Class Public Class ClassB Public Sub Show() MsgBox(1) End Sub End Class ------------------------ Dim a1 As New ClassA() Dim a2 As New ClassA() Dim b As New ClassB() a1.B = b a2.B = b a1.B = Nothing a2.B.Show() в итоге будет сообщение "1" я почему то думал, что a2.B.Show() приведет к ошибке типа Object is nothing, ведь a1.B и a2.B дожны указывать на одну переменную, которую строчкой a1.B = Nothing я убиваю. Почему это не так? может я чего то недопонимаю, или a1.B = b a2.B = b - создается две разные переменные? |
Ответы | Всего ответов: 3 |
Номер ответа: 1 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Вопросов: 1 Ответов: 90 |
Профиль | Цитата | #1 | Добавлено: 31.10.03 00:07 |
В дотнете ты _ничего_ и _никогда_ сам не удаляешь. Даже вызов Dispose - это просто освобождение ресурсов, используемых экземпляром, но никак не его удаление. В твоем примере ты просто обнуляешь ссылку на объект - и все. |
Номер ответа: 2 Автор ответа: ![]() ![]() ICQ: 155153916 Вопросов: 2 Ответов: 126 |
Профиль | Цитата | #2 | Добавлено: 31.10.03 08:19 |
Когда ты пишешь a1.B = Nothing. Ты всего лишь говоришь, что a1.B никуда не ссылается. Сам же объект продолжает существовать и будет уничтожен сборьщиком мусора только когда все ссылки на него будут удалены. |
Номер ответа: 3 Автор ответа: ![]() ![]() ![]() ICQ: 280044491 Вопросов: 43 Ответов: 227 |
Профиль | Цитата | #3 | Добавлено: 31.10.03 10:37 |
тепер все понятно, спасибо.. |
Страница: 1 |
|