如何自动将整数转换为我的类型?

时间:2014-09-26 10:23:02

标签: vb.net type-conversion

我想做的是以下内容:

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

所以问题是我必须覆盖什么样的函数,或者我需要添加什么属性,以便主编译中的代码?

它不是出于任何特定目的,只是好奇心。

2 个答案:

答案 0 :(得分:3)

您需要提供System.Int32MyNumber的{​​{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