Visual Basic中List初始化语法错误排查:DNS测速工具代码问题
VB中List字段初始化语法错误的排查与解决
在VB类级别声明List字段时,你遇到的'}' expected和')' expected错误,通常是初始化语法不符合VB规则,或是存在格式细节疏漏。以下是具体原因和修复方案:
核心语法规则
VB中类级别字段的List初始化,不能直接使用From {...}的集合初始化器(该语法仅适用于局部变量或方法内的初始化),必须通过构造函数传递数组的形式:New List(Of String)({元素1, 元素2, ...})。
常见错误场景及修复
1. 语法混用错误
如果你的domainsToTest写成了以下错误形式,会触发语法报错:
' 错误:类字段不能用From初始化 Private domainsToTest As New List(Of String) From {"google.com", "github.com"} ' 错误:多余的From关键字 Private domainsToTest As List(Of String) = New List(Of String)(From {"google.com"})
修复为正确格式:
Private domainsToTest As List(Of String) = New List(Of String)({ "google.com", "github.com", "stackoverflow.com" })
2. 元素格式错误
- 字符串引号未闭合:比如某个域名写成
"github.com(缺少结尾双引号),编译器会无法正确解析括号位置,抛出括号缺失的错误。 - 多余的末尾逗号:如果最后一个元素后加了逗号(比如
"stackoverflow.com",),旧版本VB编译器会报错,需要移除多余的逗号。
3. 项目框架版本限制
如果你的项目目标是.NET Framework 3.5及更早版本,List(Of T)的构造函数不支持直接传递数组初始化,需要先声明数组再赋值:
Private domainsArray() As String = {"google.com", "github.com"} Private domainsToTest As New List(Of String)(domainsArray)
验证方法
可以先在局部变量中测试初始化语法(比如在Sub Main或某个方法内),如果局部变量能正常运行,说明类字段的写法不符合规则,按照上述正确格式修改即可。
内容的提问来源于stack exchange,提问作者skarz
相关产品推荐
相关产品推荐

