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