我试图从函数中返回一个字符串数组,并对错误感到惊讶。
我原本预计这会有效,但会产生错误:
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
我想我不清楚{}的含义 - 是否有办法隐式返回字符串数组而不显式创建和初始化它?
答案 0 :(得分:35)
在Visual Basic 10与Visual Basic 9中更改了对类型推断的数组初始值设定项支持。
在以前的VB版本中,需要将空的parens表示为一个数组。此外,它将数组定义为对象数组,除非另有说明:
' Integer array
Dim i as Integer() = {1, 2, 3, 4}
' Object array
Dim o() = {1, 2, 3}
查看更多信息:
答案 1 :(得分:14)
Public Function TestError() As String()
Return {"foo", "bar"}
End Function
对我来说很好,应该适合你,但你可能需要允许在你的项目中使用隐式声明。我相信这会在程序设置的“编译”部分中关闭“选项严格”。
由于您使用的是VS 2008(VB.NET 9.0),因此您必须声明创建新实例
New String() {"foo", "Bar"}
答案 2 :(得分:6)
我认为您需要指定"Option Infer On"才能生效。
选项推断允许编译器猜测代码所代表的内容,因此它会猜测{“stuff”}是一个字符串数组。使用“Option Infer Off”时,{“stuff”}将不会为其分配任何类型,永远,因此它将始终失败,没有类型说明符。
选项推断是,我默认在新项目中开启,但默认情况下从早期框架迁移到3.5时关闭。
意见传入:
另外,你提到你有"Option Explicit Off"。 请不要这样做。
设置“Option Explicit Off”意味着您不必声明变量。这意味着以下代码将以静默方式无形地创建变量“Y”:
Dim X as Integer
Y = 3
这是可怕的,疯狂的,错误的。它会在你输入拼写错误时创建变量。我一直希望他们能从语言中删除它。