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 Widening (Visual Basic) ou Narrowing (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 operadores (Visual Basic)

Como declarar uma estrutura (Visual Basic)

Referência

Instrução Operator

Instrução Structure

Conceitos

Procedimentos do operador (Visual Basic)

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

Conversões de Widening e Narrowing (Visual Basic)