Dim objects As New List(Of Object)
With New Object
.prop1 = "Property 1"
.prop2 = "Property 2"
objects.add(.instance) 'i mean instance of New Object
End With
是否可能。
我问新问题,因为上一个问题有误导信息,我没有给出正确答案。所以这里的代码。
答案 0 :(得分:2)
不,不可能。 With
语句基本上创建了一个隐式变量。您对该变量所能做的只是访问成员,并且没有成员返回对象本身的引用。
如果您想要简洁的代码来创建,填充对象并将其添加到列表中,请执行以下操作:
myList.Add(New SomeType With {.SomeProperty = someValue,
.SomeOtherProperty = someOtherValue})
有趣的是,如果您创建自己的扩展方法,您可以按照自己的方式工作。我的印象是你无法扩展Object
类但是我错了或者已经改变了,因为我刚刚在VB 2013中尝试过并且它有效。您可以编写如下方法:
Imports System.Runtime.CompilerServices
Public Module ObjectExtensions
<Extension>
Public Function Self(Of T)(source As T) As T
Return source
End Function
End Module
然后做这样的事情:
With New SomeType
.SomeProperty = someValue
.SomeOtherProperty = someOtherValue
myList.Add(.Self())
End With
我不确定这确实提供了任何好处,因为我首先演示了对象初始化语法的可用性。
嗯......我刚刚意识到那并没有实际扩展Object
类。这是我尝试这样做的初衷,但后来我意识到通用方法更好,因为它会返回与你调用它相同的类型。我只是使用扩展类型为Object
的非泛型方法对其进行测试,但它确实仍然有效。
答案 1 :(得分:0)
你应该创建自己的类例如:
Public Class Car
Private _NumberCar As Integer
Public Property NumberCar() As Integer
Get
Return _NumberCar
End Get
Set(ByVal value As Integer)
_NumberCar = value
End Set
End Property
Private _ColorCar As Color
Public Property ColorCar() As Color
Get
Return _ColorCar
End Get
Set(ByVal value As Color)
_ColorCar = value
End Set
End Property
Private _OwnerName As String
Public Property OwnerName() As String
Get
Return _OwnerName
End Get
Set(ByVal value As String)
_OwnerName = value
End Set
End Property
End Class
并且在要添加汽车对象的类中执行以下操作:
Dim CarList As New List(Of Car)
Dim item As New Car
With item
.NumberCar = 1243
.ColorCar = Color.Red
.OwnerName = "Ibra"
End With
CarList.Add(item)
强文