我一直在看一些C#代码:
List<Employee> Employees = new List<Employee>{
new Employee{firstname="Aamir",lastname="Hasan",age=20},
new Employee{firstname="awais",lastname="Hasan",age=50},
new Employee{firstname="Bill",lastname="Hasan",age=70},
new Employee{firstname="sobia",lastname="khan",age=80},
};
Run Code Online (Sandbox Code Playgroud)
现在当我将其转换为vb.net时
Dim Employees as List(Of Employee) = New List(Of Employee)() With { New Employee() With { _
.firstname = "Aamir", _
.lastname = "Hasan", _
.age = 20 _
}, _
New Employee() With { _
.firstname = "awais", _
.lastname = "Hasan", _
.age = 50 _
}, _
New Employee() With { _
.firstname = "Bill", _
.lastname = "Hasan", _
.age = 70 _
}, _
New Employee() With { _
.firstname = "sobia", _
.lastname = "khan", _
.age = 80 _
} _
}
Run Code Online (Sandbox Code Playgroud)
我收到错误"在对象初始值设定项中初始化的字段或属性的名称必须以'.'开头."
现在我可以使用代码获得一组员工:
Dim Employees = { New Employee() With { _
.FirstName = "Aamir", _
.LastName = "Hasan", _
.Age = 20}, _
New Employee() With { _
.FirstName = "Awais", _
.LastName = "Hasan", _
.Age = 50}, _
New Employee() With { _
.FirstName = "Bill", _
.LastName = "Hasan", _
.Age = 70 _
} _
}
Run Code Online (Sandbox Code Playgroud)
但我想知道List(Of Employee)为什么这在vb.net中不起作用?
Mar*_*rkJ 19
在VB.NET 2010中添加了集合初始化程序.这是航空代码,但是这里是:
Dim Employees as List(Of Employee) = New List(Of Employee)() From
{
New Employee() With { _
.firstname = "Aamir", _
.lastname = "Hasan", _
.age = 20 _
}, _
New Employee() With { _
.firstname = "awais", _
.lastname = "Hasan", _
.age = 50 _
}, _
New Employee() With { _
.firstname = "Bill", _
.lastname = "Hasan", _
.age = 70 _
}, _
New Employee() With { _
.firstname = "sobia", _
.lastname = "khan", _
.age = 80 _
} _
}
Run Code Online (Sandbox Code Playgroud)
Dav*_*und 18
编辑 (2)
正如评论中所指出的,现在已经引入了VB.NET集合初始化器,并且以下很多帖子应该被认为是过时的.
编辑
不要总是盲目地信任C#到VB.NET转换器
这是一个方便的在线转换工具
原来VB.NET没有集合初始化器.这意味着没有等价的
var myList = new List<string>()
{
"abc",
"def"
};
Run Code Online (Sandbox Code Playgroud)
...但它确实有对象初始化器.因此,您可以创建一个类的实例并一次性为其属性赋值,但是您不能一次创建列表的实例并向其添加项目.
你可以得到的最接近的是上面的链接.您可以创建一个数组并在一次操作中向其中添加项目,然后您必须使用ToList该数组.
所以这次我实际上自己编译了代码,并且它有效.对不起,麻烦
Dim EmployeesTemp As Employee() = { _
New Employee() With { _
.firstname = "Aamir", _
.lastname = "Hasan", _
.age = 20 _
}, _
New Employee() With { _
.firstname = "awais", _
.lastname = "Hasan", _
.age = 50 _
}, _
New Employee() With { _
.firstname = "Bill", _
.lastname = "Hasan", _
.age = 70 _
}, _
New Employee() With { _
.firstname = "sobia", _
.lastname = "khan", _
.age = 80 _
} _
}
Dim Employees as List(Of Employee) = EmployeesTemp.ToList()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
20635 次 |
| 最近记录: |