Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Nothing, Erase и т.д. Добавлено: 21.01.07 15:07  

Автор вопроса:  ENIX | ICQ: 238819245 
Здраствуйте форумчане, я новичок и задался вопросом про эти "слова" - Nothing и Erase. Я примерно знаю что они делают, но вопрос в том предназначены ли они для "очистки памяти" от "ненужных" уже классов и масcивов.
Вариант рассматриваем когда они обьявлены внутри процедуры и как паблик; в случае к примеру когда переменной определенного класса директивой Set я передаю ссылку, что в этом случае делает Nothing и есть ли смысл использовать?

Ответить

  Ответы Всего ответов: 4  

Номер ответа: 1
Автор ответа:
 Алексей



black  admin

ICQ: 261779681 

Вопросов: 87
Ответов: 633
 Web-сайт: aleksey.nemiro.ru
 Профиль | | #1
Добавлено: 21.01.07 16:38
Nothing

Зарезервированное слово Nothing представляет значение по умолчанию любого типа данных. Присваивание переменной зарезервированного слова Nothing устанавливает для нее значение по умолчанию для типа, с которым она была объявлена. Если тип содержит члены-переменные, то для них устанавливаются соответствующие значения по умолчанию. Это показано в следующем примере:
Public Structure MyStruct
   Public Name As String
   Public Number As Short
End Structure
Dim S As MyStruct, I As Integer, B As Boolean
S = Nothing   ' Sets S.Name to Nothing, S.Number to 0.
I = Nothing   ' Sets I to 0.
B = Nothing   ' Sets B to False.


Если переменная является ссылочным типом — то есть представляет собой объектную переменную — то Nothing означает, что переменная не связана с каким-либо объектом. Например:

Dim MyObject As Object
MyObject = Nothing   ' No object currently referred to.


При присвоении объектной переменной значения Nothing она перестает указывать на какой-либо экземпляр объекта. Если в переменной содержалась ссылка на экземпляр, то установка для нее значения Nothing не приводит к удалению самого экземпляра. Удаление экземпляра и освобождение связанных с ним ресурсов памяти и системы производится только после обнаружения сборщиком мусора отсутствия активных ссылок на экземпляр.



Оператор Erase
Используется для удаления переменных типа «массив» и высвобождения памяти, отведенной под их элементы.

Erase arraylist


Элементы
arraylist

Обязательный. Список удаляемых переменных типа «массив». Несколько переменных разделяются запятыми.

Примечания

Оператор Erase может присутствовать только на уровне процедур. Это означает, что удалять переменные типа «массив» можно внутри процедуры, но не на уровне класса или модуля.
Оператор Erase эквивалентен по своему действию присваиванию значения Nothing каждой из переменных типа «массив».

Пример

В этом примере показано использование оператора Erase для удаления двух массивов и высвобождения использовавшейся ими памяти (1000 и 100 элементов, соответственно). Затем с помощью оператора ReDim трехмерному массиву присваивается новый экземпляр массива.

Dim Int3DArray(9, 9, 9), Int2DArray(9, 9) As Integer
' ...
Erase Int3DArray, Int2DArray
' ...
ReDim Int3DArray(4, 4, 9)



Ответить

Номер ответа: 2
Автор ответа:
 ENIX



ICQ: 238819245 

Вопросов: 9
Ответов: 76
 Профиль | | #2 Добавлено: 21.01.07 16:46
Спасибо стало ясно:
Nothing - используется для сброса в дефолт, уничтожение ссылки на экземпляр. В случае обьявления переменной внутри sub, function и т.д. и передачей ссылки на экземпляр использование Nothing в качестве "для освобождения памяти" не нужно, в случае с паблик почти аналогично.
Erase - остается в обоих случаях 1) сброс масива 2) освобождение памяти

Спасиб...

Ответить

Номер ответа: 3
Автор ответа:
 LamerOnLine



ICQ: 334781088 

Вопросов: 108
Ответов: 2822
 Профиль | | #3 Добавлено: 22.01.07 15:08
Nothing чаще используется для проверки объектной переменной.

Ответить

Номер ответа: 4
Автор ответа:
 Fever



Вопросов: 60
Ответов: 808
 Профиль | | #4 Добавлено: 23.01.07 21:24

Форум - Общий форум

Structure,Short,...


Эт где ж ты такое видел?

Private Type MyStruct
    Name As String
    Number As Integer
End Type
Dim a as MyStruct
a=nothing' Invalid use of object

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам