有哪些选项可以简化List
初始化以消除重复New MyObject() With
以及参数名称,例如Value1
?
我需要创建 50 个对象的列表,因此有很多重复的、可能不必要的代码。
我使用最新的 Visual Studio 2019 (16.2.3)。
Public Class MyObject
Public Property Value1 As Int32
Public Property Value2 As Int32
End Class
Dim Test As New List(Of MyObject) From {
New MyObject() With {.Value1 = 1, .Value2 = 1},
New MyObject() With {.Value1 = 2, .Value2 = 2},
New MyObject() With {.Value1 = 3, .Value2 = 3}
}
以下代码演示如何向泛型 List 类型添加扩展方法,以便可以使用集合初始值设定项添加类型 T 的对象。扩展方法使您能够使用缩短的集合初始值设定项语法:
Imports System.Runtime.CompilerServices
Module MyExtensions_List
<Extension()>
Sub Add(ByVal list As List(Of MyObject), ByVal v1 As Integer, ByVal v2 As Integer)
list.Add(New MyObject With {.Value1 = v1, .Value2 = v2})
End Sub
End Module
现在,您可以简单地将其用作:
Dim list1 = New List(Of MyObject) From { {1, 10}, {2, 20}, {3, 30} }
Note: The Add
方法可以是如图所示的扩展方法,或者,它可以显式定义为您要使用的类的普通公共方法(MyObject
here)!
Ref: 集合初始化器 https://learn.microsoft.com/en-us/dotnet/visual-basic/programming-guide/language-features/collection-initializers/ and 如何:创建集合初始值设定项使用的添加扩展方法 https://learn.microsoft.com/en-us/dotnet/visual-basic/programming-guide/language-features/collection-initializers/how-to-create-an-add-extension-method-used-by-a-collection-initializer
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)