Жизненный цикл объекта в vb.net

#vb.net

#vb.net

Вопрос:

У меня есть вопрос о жизненном цикле для vb.net объект в чем разница между этими двумя функциями:

функция 1:

 Private Function MyF() As Integer
    Using c As New cMyclass
        If c.somework() = 1 Then Return 1
    End Using
    Return 0
End Function
  

функция 2:

 Private Function MyF() As Integer
    Dim c As New myClass
    If c.somework() = 1 Then Return 1
    Return 0
End Function
  
  • какое решение лучше?

Комментарии:

1. Верхний использует using, а второй использует переменную. «Лучшее» решение основано на мнениях и субъективно

2. Вопрос о домашнем задании?

3. Первый из них удаляет объект после достижения конечного использования . То же самое, что делать c = Ничего

4. @Innat3: вы путаете разные вещи. using Оператор является синтаксическим сахаром для try-finally, где finally вызывает Dipose . Речь идет о неуправляемых ресурсах, которые могут быть там освобождены. Установка для объекта значения null / Nothing в большинстве случаев не дает ничего полезного. Это даже не нужно для сборщика гаража, что в любом случае является другой темой.

5. Документация дает вам действительно хорошее объяснение. Даже с примерами (попробуйте finally dispose).

Ответ №1:

Документация дает вам действительно хорошее объяснение. Даже с примерами.

Это

 Using resource As New resourceType 
    ' Insert code to work with resource.
End Using
  

Такой же, как этот

 ' For the acquisition and disposal of resource, the following
' Try construction is equivalent to the Using block.
Dim resource As New resourceType
Try 
    ' Insert code to work with resource.
Finally 
    If resource IsNot Nothing Then
        resource.Dispose() 
    End If
End Try 
  

Удаление объектов — это то, что всегда нужно делать, когда это возможно.