[英]Converting New With from C# to VB.NET - Compilation Error
我在C#中有以下代碼:
public static ArrayList GetGenders()
{
return new ArrayList()
{
new { Value = 1, Display = "ap" },
new { Value = 2, Display = "up" }
};
}
一切正常。 但是,當我將其轉換為VB.NET時:
Public Shared Function GetGenders() As ArrayList
Return New ArrayList() From { _
New With { _
.Value = 1, _
.Display = "ap" _
}, _
New With { _
.Value = 2, _
.Display = "up" _
} _
}
End Function
我收到以下編譯時錯誤:
BC30205:預計語句結束。
代碼有什么問題?
我的心理調試技巧告訴我,您正在使用VB.Net 2005,它不支持匿名類型 。
lista.Add(New InvValorMedio With {.Data_Base = _dataBase, _
.Tipo = item.IdInvTipo, _
.Valor = 0})
這可能是2010年之前的VB.Net版本,在這種情況下FROM
語法不可用(我之前在開發人員融合轉換了一些代碼時遇到了同樣的問題-我正從.Net 4中的C#轉到VB .Net 3.5中的.Net)
以下兩個階段的過程應該做到這一點-尚未找到使它成為一行的方法:
Dim arr() = { _
New With {.Value = 1, .Display = "ap"}, _
New With {.Value = 2, .Display = "up"} _
}
return = New ArrayList(arr)
VB2005特定的答案涉及創建一個類來保存值,然后用該類的實例填充arraylist。
班級:
Public Class LookupList
Private m_Value As Integer
Private m_sDisplay As String
Public Sub New()
MyBase.New()
End Sub
Public Sub New(ByVal wValue As Integer, ByVal sDisplay As String)
Me.New()
Me.Value = wValue
Me.Display = sDisplay
End Sub
Public Property Value() As Integer
Get
Return m_Value
End Get
Set(ByVal value As Integer)
m_Value = value
End Set
End Property
Public Property Display() As String
Get
Return m_sDisplay
End Get
Set(ByVal value As String)
m_sDisplay = value
End Set
End Property
End Class
和方法:
Public Shared Function GetGenders() As ArrayList
Dim oList As New ArrayList
oList.AddRange(New LookupList() {New LookupList(1, "ap"), New LookupList(2, "up")})
Return oList
End Function
與原始C#代碼更加內聯的解決方案是為該類創建一個集合類:
Public Class LookupListCollection
Inherits System.Collections.Generic.List(Of LookupList)
Public Sub New()
MyBase.New()
End Sub
Public Sub New(ByVal ParamArray aItems As LookupList())
Me.New()
If aItems IsNot Nothing Then
Me.AddRange(aItems)
End If
End Sub
End Class
然后可以稱為:
Public Shared Function GetGenders() As LookupListCollection
Return New LookupListCollection(New LookupList(1, "ap"), New LookupList(2, "up"))
End Function
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.