簡體   English   中英

如何在vb.net中更新靜態數組

[英]How to update a Static array in vb.net

我正在Visual Studio 2105中將VBA6代碼轉換為VB.net。我的VBA6代碼從文件中加載包含行的數組,並將其保留以供重復使用,如下所示:

Static sArr as Variant
'Load the file to a String called S  (details omitted for brevity here)
sArr = split(S, vbNewline)

這很好用; 根據需要,sArr的每個條目中都只有一行,只要需要,我就可以從數組中獲取任何一行。

在VB.Net中(使用Visual Studio時),我已將其轉換為以下內容:

Static sArr() as String
'Load the file to a String called S (details omitted for brevity here)
sArr = S.Split(vbNewLine)

此操作失敗,並顯示錯誤消息"Error BC30451: 'sArr' is not declared. It may be inaccessible due to its protection level." 一方面,此錯誤消息顯然是錯誤的。 肯定會宣布sArr。 它是在例程的開始處聲明的,在該例程中,編譯器和監視均聲明了Error。 但是,它被聲明為靜態,這似乎會導致問題。

我已經嘗試了上述方法,但是使用此非靜態Dim語句Dim sArr() As String並且在VB.Net中可以正常工作。 生成所需的逐行數組。

如何使它在VB.Net中工作,使我可以將數據保留在靜態數組中? 在VB.Net中,將靜態對象或Array =分配給(非靜態)sArr或直接分配給S.Split本身根本行不通。 看來問題出在與靜態信息有關,但是如何解決這個問題呢?

盡管省略不必要的內容是令人欽佩的,但似乎您省略了上下文所需的內容。 我建議兩件事。 一種是切換到泛型並使用字符串列表,第二種是為了簡潔起見將所有東西都排除掉,然后將其變成返回單個字符串的函數。 這將使測試和調試更加容易。

您似乎在暗示Static無法在vs 2015中運行,並且編譯器在有價值的代碼上引發錯誤。 盡管編譯器顯然存在錯誤,但顯然可以正常工作。 靜態作品。

這是指向.net小提琴的鏈接,該鏈接基本上完成了您要說的事情: https : //dotnetfiddle.net/3DXFJs 我添加了寫行來說明程序流程,該變量只設置了一次,否則正如您所說的那樣進行操作-使用列表和數組填充Static字符串列表。 請注意,我使用了兩個不同的函數,都使用了靜態變量sArr,並且它們都只設置了一次,並且在各自的函數中僅設置了一次。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM