Vb.net 如何在中使用新对象的实例。。。块

Vb.net 如何在中使用新对象的实例。。。块,vb.net,Vb.net,有可能吗 我问了一个新问题,因为最后一个问题有误导性的信息,我并没有给出正确的答案。所以这里是代码。不,这是不可能的。With语句基本上创建了一个隐式变量。使用该变量所能做的就是访问成员,并且没有任何成员返回对对象本身的引用 如果希望简洁的代码创建、填充对象并将其添加到列表中,请执行以下操作: Dim objects As New List(Of Object) With New Object .prop1 = "Property 1" .prop2 = "Property 2"

有可能吗


我问了一个新问题,因为最后一个问题有误导性的信息,我并没有给出正确的答案。所以这里是代码。

不,这是不可能的。
With
语句基本上创建了一个隐式变量。使用该变量所能做的就是访问成员,并且没有任何成员返回对对象本身的引用

如果希望简洁的代码创建、填充对象并将其添加到列表中,请执行以下操作:

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
有趣的是,如果您创建自己的扩展方法,就可以按照您想要的方式工作。我的印象是您无法扩展
对象
类,但要么是我错了,要么是因为我刚刚在VB 2013中进行了尝试,结果成功了。您可以编写如下方法:

myList.Add(New SomeType With {.SomeProperty = someValue,
                              .SomeOtherProperty = someOtherValue})
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
在要添加cars对象的类中,执行以下操作:

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

strong文本

问题是什么?几天前你已经问了这个问题:
    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)