Partilhar via


Como: definir um operador de conversão (Visual Basic)

Se você tiver definido uma classe ou estrutura, você pode definir um operador de conversão de tipos entre o tipo de sua classe ou estrutura e outro tipo de dados (como Integer,Double, ou String) .

Defina a conversão de tipos como um procedimento Função CType (Visual Basic) dentro da classe ou estrutura.Todos os procedimentos de conversão devem ser Public Shared, e cada um deles deve especificar ou Alargamento (Visual Basic) ou Restrição (Visual Basic).

Definir um operador em uma classe ou estrutura também é chamado de sobrecarregar o operador.

Exemplo

O exemplo a seguir define os operadores de conversão entre uma estrutura chamada digit e um Byte.

Public Structure digit
Private dig As Byte
    Public Sub New(ByVal b As Byte)
        If (b < 0 OrElse b > 9) Then Throw New System.ArgumentException(
            "Argument outside range for Byte")
        Me.dig = b
    End Sub
    Public Shared Widening Operator CType(ByVal d As digit) As Byte
        Return d.dig
    End Operator
    Public Shared Narrowing Operator CType(ByVal b As Byte) As digit
        Return New digit(b)
    End Operator
End Structure

Você pode testar a estrutura digit com o seguinte código:

Public Sub consumeDigit()
    Dim d1 As New digit(4)
    Dim d2 As New digit(7)
    Dim d3 As digit = CType(CByte(3), digit)
    Dim s As String = "Initial 4 generates " & CStr(CType(d1, Byte)) &
          vbCrLf & "Initial 7 generates " & CStr(CType(d2, Byte)) &
          vbCrLf & "Converted 3 generates " & CStr(CType(d3, Byte))
    Try
        Dim d4 As digit
        d4 = CType(CType(d1, Byte) + CType(d2, Byte), digit)
    Catch e4 As System.Exception
        s &= vbCrLf & "4 + 7 generates " & """" & e4.Message & """"
    End Try
    Try
        Dim d5 As digit = CType(CByte(10), digit)
    Catch e5 As System.Exception
        s &= vbCrLf & "Initial 10 generates " & """" & e5.Message & """"
    End Try
    MsgBox(s)
End Sub

Consulte também

Tarefas

Como: definir um operador (Visual Basic)

Como: chamar um procedimento de operador (Visual Basic)

Como: usar uma classe que define os operadores (Visual Basic)

Como: declara uma estrutura (Visual Basic)

Referência

Instrução Operator

Declaração Structure

Conceitos

Procedimentos de operador (Visual Basic)

Conversões implícitas e explícitas (Visual Basic)

Ampliação e restrição de conversões (Visual Basic)