ReDim Preserve 行效能上的陷阱在 VB 任何使用 列的人一定非常熟悉使用 ReDim 述 改 列大小,今天, 我 明 什 最好不要使用 的 述 法,或是至少要很小心考 使用到它。
ReDim 可能上的使用
在 始
ReDim 述句之前, 我要藉由程式 例 (
redimsamples.aspx) 明
ReDim 最普遍的使用方法。使用到
ReDim 以及
ReDim Preserve:
<% @Page Language="VB" %><%Dim arrStrings(1) as StringResponse.Write(UBound(arrStrings) & "<br>")ReDim arrStrings(20)Response.Write(UBound(arrStrings) & "<br>")ReDim Preserve arrStrings(25)Response.Write(UBound(arrStrings) & "<br>")%>
ReDim 允 加大以及 小 列大小。因此,一 新的 列 在每一 instance 中 生,理由是 VB.NET 列是 承自 .NET Runtime 的
System.Array,而在 生 ,根 定 有一固定大小。在 C# 中 是很明 的,就如下的程式 所示是仿效
ReDim:
string[] arrTest = new string[1];// and now we want to change the size: ReDim arrTest(20)arrTest = new string[20];
就其本身 , 不是 , 在於
Preserve(今日主 )。 使用
Redim 含有
Preserve 字 ,之前的元素被保留 - 就如在新的 列中 一
ReDim Preserve 行效能上的 手
原 上,我 已 搞 了整件事 -
ReDim Preserve 述句 生一新 列 - 而之前 列的元素 到新的 列。 在 VB.NET 境中 暗自 生 (就如 去的 VB 是一 情形)。除了 行效能漏失外, 不 察 。 了能 突 象,我 定一 圈 Redim 列 5000 次 (
redimloop.aspx)。
<% @Page Language="VB" Trace="True" %><%Dim arrStrings() as StringDim i as IntegerTrace.Write("Redim","Start")For i = 1 To 5000 ReDim Preserve arrStrings(i) arrStrings(i-1) = iNextTrace.Write("Redim","End")%>