在VB.NET中声明并初始化一个字符串数组
问题描述:
我试图从一个函数中返回一个字符串数组,并且由于错误而感到惊讶。在VB.NET中声明并初始化一个字符串数组
我本来期望这个工作,但它会产生一个错误:
Public Function TestError() As String()
Return {"foo", "bar"}
End Function
这工作:
Public Function TestOK() As String()
Dim ar As String() = {"foo", "bar"}
Return ar
End Function
一样:
Public Function TestOK() As String()
Return New String() {"foo", "bar"}
End Function
我猜我不清楚{}的含义 - 有没有一种方法隐式返回一个字符串数组而不显式创建和初始化它?
答
的类型推断数组初始化支持在Visual Basic 10被改变VS的Visual Basic 9。
在以前的VB版本中,需要将空的零件表示为一个数组。此外,它会定义数组对象数组除非特别指出:
' Integer array
Dim i as Integer() = {1, 2, 3, 4}
' Object array
Dim o() = {1, 2, 3}
检查的详细信息:
答
Public Function TestError() As String()
Return {"foo", "bar"}
End Function
对我来说工作正常,应该为你工作,但你可能需要允许在你的项目中使用隐式声明。我相信这会关闭程序设置的“编译”部分中的“严格”选项。
由于使用VS 2008(VB.NET 9.0),你必须声明创建新实例
New String() {"foo", "Bar"}
答
我相信你需要指定"Option Infer On"为这工作。
Option Infer允许编译器猜测代码所代表的内容,因此它会猜测{“stuff”}是一个字符串数组。当“选项关闭”时,{“stuff”}将不会有任何类型分配给它,有史以来,所以它总是会失败,没有类型说明符。
选项推理是,我认为默认情况下在新项目中打开,但在从早期框架迁移到3.5时默认为关闭。
意见来电:
另外,你提到你有"Option Explicit Off"。 请不要这样做。
设置“Option Explicit Off”意味着您不必声明变量。这意味着下面的代码将默默地和无形地创建变量“Y”:
Dim X as Integer
Y = 3
这是可怕的,疯狂的和错误的。它会在你输入错误时创建变量。我一直希望他们会从语言中删除它。
使用VS2008,目标是.NET 3.5,并选择明确的是关闭的,而我仍然得到一个错误:“表达式预期”。 – chris 2011-03-10 16:45:12