我希望获得与使用此语法在C#中获得的结果相同的结果,但在VB.NET中:
// This is my generic object (coming from Json parsing!):
var genericContent = new { Name = "name1", Value = 0 };
// I would like to have a generic list, created by this generic item:
var myList = (new[] { genericContent }).ToList();
// So, I can add any other generic items (with the same structure)...
myList.Add(new { Name = "name2", Value = 1 });
// And treat them as a normal list, without declaring the class!
return myList.Count;
...所以,我只想在VB中创建一个通用数组。
在C#中它运行良好,但我没有看到这个VB.NET语法...
我正在使用.NET framework 3.5!
谢谢!
答案 0 :(得分:3)
这里没问题:
Dim genericContent = new with { .Name = "name1", .Value = 0 }
Dim myList = {genericContent}.ToList()
myList.Add(new with { .Name = "name2", .Value = 1 })
至少在.Net 4.0(VB.Net 10.0)中。
对于早期版本:不,没有辅助方法就不可能。
答案 1 :(得分:0)
我认为在该框架中没有紧凑的语法,如在C#...
中尝试使用这种方式......
声明一个像这样的方法(我认为共享更好):
Public Shared Function GetArray(Of T)(ByVal ParamArray values() As T) As T()
Return values
End Function
所以你可以创建一个传递泛型参数的数组,而不是LINQ应该很容易创建一个通用列表:
Dim genericContent = New With { Name = "name1", Value = 0 }
Dim myList = (GetArray(genericContent)).ToList()
myList.Add(New With { Name = "name2", Value = 1 })
return myList.Count