运算符过程 (Visual Basic)

运算符过程是一系列 Visual Basic 语句,这些语句在您所定义的类或结构上定义标准运算符(例如 *、<> 或 And)的行为。 这也称为“运算符重载”。

何时定义运算符过程

当您定义好类或结构后,可以将变量声明为所定义的类或结构的类型。 有时,这样的变量需要作为表达式的一部分参与到运算中。 若要执行此操作,它必须是运算符的一个操作数。

Visual Basic 仅在其基本数据类型上定义运算符。 在一个或两个操作数都是您的类或结构的类型时,可以定义一个运算符的行为。

有关更多信息,请参见 Operator 语句

运算符过程的类型

运算符过程可以是下面的一种类型:

  • 一元运算符的定义,其中的参数是您的类或结构的类型。

  • 一个二元运算符的定义,其中至少一个参数是您的类或结构的类型。

  • 一个转换运算符的定义,其中的参数是您的类或结构的类型。

  • 一个转换运算符的定义,返回您的类或结构的类型。

转换运算符总是一元运算符,您也总是将 CType 用作所定义的运算符。

声明语法

声明运算符过程的语法如下所示:

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

' Statements of the operator procedure.

End Operator

仅在类型转换运算符上使用 Widening 或 Narrowing 关键字。 类型转换运算符的符号总是 CType 函数 (Visual Basic)

声明两个操作数以定义一个二元运算符,声明一个操作数以定义一个一元运算符(包括类型转换运算符)。 所有操作数都必须声明为 ByVal。

用与声明 Sub 过程 (Visual Basic) 的参数相同的方法声明每个操作数。

xh17yw4c.collapse_all(zh-cn,VS.110).gif数据类型

因为是在已定义的类或结构上定义运算符,所以至少其中一个操作数必须是该类或结构的数据类型。 对于类型转换运算符,操作数或返回类型必须是类或结构的数据类型。

有关更多详细信息,请参见Operator 语句

调用语法

使用表达式中的运算符符号隐式调用运算符过程。 按照为预定义运算符提供操作数的方法提供操作数。

隐式调用运算符过程的语法如下所示:

Dim testStruct As 结构名

Dim testNewStruct As structurename = testStruct operatorsymbol 10

xh17yw4c.collapse_all(zh-cn,VS.110).gif声明与调用阐释

下面的结构将有符号的 128 位整数值存储为高序部分和低序部分。 它将 + 运算符定义为将两个 veryLong 值相加并生成结果 veryLong 值。

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

下面的示例演示对 veryLong 上定义的 + 运算符的典型调用。

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

有关更多信息和示例,请参见 Operator Overloading in Visual Basic 2005(Visual Basic 2005 中的运算符重载)。

请参见

任务

如何:定义运算符 (Visual Basic)

如何:定义转换运算符 (Visual Basic)

如何:调用运算符过程 (Visual Basic)

如何:使用定义运算符的类 (Visual Basic)

参考

Operator 语句

概念

Visual Basic 中的过程

Sub 过程 (Visual Basic)

Function 过程 (Visual Basic)

Property 过程 (Visual Basic)

过程参数和变量 (Visual Basic)