如何在vb.net中更新静态数组

时间:2016-12-18 02:25:16

标签: .net arrays vb.net visual-studio-2015

我正在将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肯定是被宣布的。它在编译器和watch声明Error的例程开始时声明。但是,它被声明为静态,这似乎导致了问题。

我已尝试过上述方法,但使用了这个非静态Dim语句 Dim sArr() As String 它在VB.Net中运行良好。生成所需的逐行数组。

如何让这个在VB.Net中工作的方式允许我将数据保存在静态数组中?在VB.Net中,将静态对象或Array =分配给(非静态)sArr或直接分配给S.Split本身根本不起作用。似乎问题与静态信息有关,但是如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

虽然省略不必要的内容是令人钦佩的,但似乎您省略了上下文所需的内容。我会建议两件事。一,切换到泛型并使用一个字符串列表,然后两个,为了简洁而将其排除在外,并将其转换为返回单个字符串的函数。这将使测试和调试更容易。

你似乎暗示静态在vs 2015中不起作用,编译器在valud代码上抛出错误。虽然编译器显然有bug,但显然主要是有效的。静态工作。

这是一个.net小提琴的链接,它基本上可以完成你想做的事:https://dotnetfiddle.net/3DXFJs。我已经添加了writelines来说明程序流程,并且变量只设置了一次,但是如你所说的那样 - 使用列表和数组填充setup.py字符串列表。请注意,我使用两个不同的函数,都使用静态变量sArr,并且它们都设置一次,并且在它们各自的函数中只设置一次。