我想做的是以下内容:
class myNumber
sub new(i as integer)
end sub
end class
sub main()
Dim listl as new List(of myNumber)
listl.add(1)
' some more stuff ... '
end sub
所以问题是我必须覆盖什么样的函数,或者我需要添加什么属性,以便主编译中的代码?
它不是出于任何特定目的,只是好奇心。
答案 0 :(得分:3)
您需要提供System.Int32
到MyNumber
的{{3}}。在这种情况下,我也会使用Structure
而不是类,因为它代表一个不可变的值类型。
在VB.NET中,您必须覆盖Widening CType operator
以创建隐式转换:
Public Structure MyNumber
Public Sub New(value As Int32)
Me.Value = value
End Sub
Public Property Value As System.Int32
Public Overloads Shared Widening Operator CType(value As Int32) As MyNumber
Return New MyNumber(value)
End Operator
End Structure
现在可行:
Dim listl as new List(of MyNumber)
listl.Add(1)
答案 1 :(得分:1)
您只需要稍微更改Add
以创建myNumber
的新实例,在构造函数中传递所需的整数值:
Class myNumber
Sub New(i As Integer)
End Sub
End Class
Sub Main()
Dim listl As New List(Of myNumber)
listl.Add(New myNumber(1))
'some more stuff
End Sub