如何在.net中重新初始化数组为null?

时间:2014-06-11 14:33:05

标签: .net vb.net

我有一个double(),一旦我完成了它,我想通过将数组设置为null再次使用它。显然,在.net中这是一种可怕的做法,那么将数组重新初始化为正确的方法是什么?

Array.clear给我留下了一个零数组。这个变量可以被整个类使用,因此创建一个新数组也不会回答这个问题。下面的代码显示了如何使用变量。它用于多种方法。我希望这个例子可以解释我想要问的内容。

class foo
    private dim myArray as new double()

    public sub createArrayFromFile()
        If(not isNothing(myArray))
           //set myarray to null. what's this code?
        End If
        //Add data to myArray by parsing a file

    end sub

    public sub createArrayFromMachine()
        If(not isNothing(myArray))
           //set myarray to null. what's this code?
        End If
        //Add data to the array from a machine
    end sub

    public sub sendToDB()
        if(not isNothing(myarray)
           //code that puts the data into the database
        end if
    end sub
end class

3 个答案:

答案 0 :(得分:2)

您可以简单地创建一个新数组并让垃圾收集器完成其工作:

my_array = {} ' create a new, empty array '

或者,如果您想重复使用并清除数组,请使用Array.Clear方法:

  

Array.Clear方法

     

将数组中的元素范围设置为每种元素类型的默认值。

或更改其大小:

ReDim my_array(-1) ' delete all elements and set size to 0 or whatever '

答案 1 :(得分:0)

在这种情况下,您无需担心在.NET中管理内存(在大多数其他情况下也是如此)。如果在程序结束时将数组保留为数组,则垃圾收集器将自动释放它。

了解如何管理变量的范围。始终将您的变量声明为正确级别,以便让垃圾收集器尽快释放相关内存。

如果您需要为同一目的重用相同的变量,请再想一想。在大多数情况下,最好声明一个不同的变量。如果你正在循环,并且每次都需要一个新数组,那么在循环中声明一个数组,所以当它进入下一次迭代时,它会自动清理。

编辑:关于您的问题编辑,以下是您可以执行的操作:

class foo
  private dim myArray as new double()

  public function foobar() as new double()
    Dim myArrayLocal1 As new double()
    'Add some stuff to the myArrayLocal1 
    If smth then Return myArrayLocal1

    Dim myArrayLocal2 As new double()
    'Add some stuff to the myArrayLocal2 
    Return myArrayLocal2 
  end sub

  'then do this myArray = foobar
end class

该函数也可以声明为Shared。虽然看起来在这种情况下你需要两个独立的功能。我将为您提供一个更具体的示例,请添加有关实际“某些内容”代码的更多详细信息。

答案 2 :(得分:0)

这正是我所寻找的

myArray = nothing