Sdílet prostřednictvím


Procedury operátoru (Visual Basic)

Procedura operátoru je řada příkazů jazyka Visual Basic, které definují chování standardního operátoru (například *, <>nebo And) u třídy nebo struktury, kterou jste definovali. Tomu se také říká přetížení operátoru.

Kdy definovat procedury operátoru

Pokud jste definovali třídu nebo strukturu, můžete deklarovat proměnné, které mají být typu této třídy nebo struktury. Někdy se taková proměnná musí účastnit operace jako součást výrazu. K tomu musí být operand operátoru.

Visual Basic definuje operátory pouze na základních datových typech. Chování operátoru můžete definovat, pokud jeden nebo oba operandy jsou typu třídy nebo struktury.

Další informace naleznete v tématu Příkaz operátoru.

Typy procedur operátoru

Operátor může být jedním z následujících typů:

  • Definice unárního operátoru, kde je argument typu třídy nebo struktury.

  • Definice binárního operátoru, kde alespoň jeden z argumentů je typu třídy nebo struktury.

  • Definice operátoru převodu, kde je argument typu třídy nebo struktury.

  • Definice operátoru převodu, který vrací typ třídy nebo struktury.

Převodní operátory jsou vždy unární a vždy používáte CType jako operátor, který definujete.

Syntaxe deklarace

Syntaxe pro deklarování procedury operátoru je následující:

Public Shared [Widening | Narrowing] Operator operatorsymbol ( operand1 [,  operand2 ]) As datatype

' Statements of the operator procedure.

End Operator

Použijete Widening Narrowing klíčové slovo pouze u operátoru převodu typu. Symbol operátoru je vždy funkce CType pro operátor převodu typu.

Deklarujete dva operandy pro definování binárního operátoru a deklarujete jeden operand, který definuje unární operátor, včetně operátoru převodu typu. Všechny operandy musí být deklarovány ByVal.

Každý operand deklarujete stejným způsobem, jakým deklarujete parametry pro dílčí procedury.

Datový typ

Vzhledem k tomu, že definujete operátor pro třídu nebo strukturu, kterou jste definovali, musí být alespoň jeden z operandů datového typu této třídy nebo struktury. U operátoru převodu typu musí být operand nebo návratový typ datového typu třídy nebo struktury.

Další podrobnosti najdete v tématu Příkaz operátoru.

Syntaxe volání

Proceduru operátoru vyvoláte implicitně pomocí symbolu operátoru ve výrazu. Operandy zadáte stejným způsobem jako u předdefinovaných operátorů.

Syntaxe implicitního volání procedury operátoru je následující:

Dim testStruct As structurename

Dim testNewStruct As structurename = testStruct operatorsymbol 10

Obrázek deklarace a volání

Následující struktura ukládá 128bitovou celočíselnou hodnotu se 128bitovou hodnotou jako součásti s vysokým pořadím a částmi s nízkým pořadím. Definuje operátor, + který přidá dvě veryLong hodnoty a vygeneruje výslednou veryLong hodnotu.

Public Structure veryLong
    Dim highOrder As Long
    Dim lowOrder As Long
    Public Shared Operator +(ByVal v As veryLong, 
                             ByVal w As veryLong) As veryLong
        Dim sum As New veryLong
        sum = v
        Try
            sum.lowOrder += w.lowOrder
        Catch ex As System.OverflowException
            sum.lowOrder -= (Long.MaxValue - w.lowOrder + 1)
            sum.highOrder += 1
        End Try
        sum.highOrder += w.highOrder
        Return sum
    End Operator
End Structure

Následující příklad ukazuje typické volání operátoru definovaného + na veryLong.

Dim v1, v2, v3 As veryLong
v1.highOrder = 1
v1.lowOrder = Long.MaxValue
v2.highOrder = 0
v2.lowOrder = 4
v3 = v1 + v2

Viz také