在IF / THEN块中使用DIM语句 - 如果条件失败则分配变量?

时间:2014-08-22 16:11:50

标签: vb.net vb.net-2010

尽量提高效率...我想知道何时或是否在VB.NET中实际分配了一个失败的IF / THEN块中的变量。

这是语句块

IF MyCondition then

   dim myVariable as String

   myVariable = "FOO"

end if

如果MyCondition失败,那么在调用过程/函数时,实际分配的变量是什么?我知道它不会被设置为" FOO"但无论如何分配内存?我知道在这种情况下,影响是微不足道的,但它可能是非常大的物体。如果没有必要,我试图阻止分配非常大的资源。 感谢

1 个答案:

答案 0 :(得分:1)

如果未执行if块,则不会有任何内存分配。由于永远不会创建资源(或表示它的对象),因此无需将其放在堆上。您可以使用Visual Studio附带的性能分析工具轻松地对此进行测试。写一个小测试程序,如下所示:

Private Sub Execute()
    If allocateResource Then
        Dim resource As List(Of String)
        resource = Me.AllocateHugeResource
    End If
End Sub

Private Function AllocateHugeResource() As List(Of String)
    Dim ret As New List(Of String)
    For i As Integer = 0 To 100000
        ret.Add("Large string for tests")
    Next
    Return ret
End Function

您可以按照上面的说明启动块的分析过程。您可以将allocateResource更改为true或注释资源声明和AllocateHugeResource()并比较结果。