Udostępnij za pośrednictwem


Operator — Instrukcja

Deklaruje symbol operatora, operandy i definiowania procedury operatora na klasy lub struktury kodu.

[ <attrlist> ] Public [ Overloads ] Shared [ Shadows ] [ Widening | Narrowing ] 
Operator operatorsymbol ( operand1 [, operand2 ]) [ As [ <attrlist> ] type ]
    [ statements ]
    [ statements ]
    Return returnvalue
    [ statements ]
End Operator

Części

  • attrlist
    Opcjonalne.Zobacz listy atrybutów.

  • Public
    Wymagane.Wskazuje, że ta procedura operator ma Public (Visual Basic) dostępu.

  • Overloads
    Opcjonalne.See Overloads (Visual Basic).

  • Shared
    Wymagane.Wskazuje, że jest to procedura operator Shared (Visual Basic) procedury.

  • Shadows
    Opcjonalne.See Shadows (Visual Basic).

  • Widening
    Wymagane dla operatora konwersji, chyba że zostanie to Narrowing.Wskazuje, że ta procedura operator definiuje Widening (Visual Basic) konwersji.Na tej stronie pomocy, zobacz temat "Poszerzenia i zawężanie konwersje".

  • Narrowing
    Wymagane dla operatora konwersji, chyba że zostanie to Widening.Wskazuje, że ta procedura operator definiuje Narrowing (Visual Basic) konwersji.Na tej stronie pomocy, zobacz temat "Poszerzenia i zawężanie konwersje".

  • operatorsymbol
    Wymagane.Symbol lub identyfikator operator, który określa tę procedurę operatora.

  • operand1
    Wymagane.Nazwa i typ pojedynczym operandzie operator jednoargumentowy (łącznie z operatora konwersji) lub lewy operand operatora dwuargumentowego.

  • operand2
    Wymagane dla operatorów binarnych.Nazwa i typ prawy operand operatora dwuargumentowego.

    operand1i operand2 mają następującą składnię i części:

    [ ByVal ] operandname [ As operandtype ]

    Część

    Opis

    ByVal

    Opcjonalne, ale mechanizm przekazywania musi być ByVal (Visual Basic).

    operandname

    Wymagane.Nazwa zmiennej, reprezentujących ten operand.See Zadeklarowane nazwy elementów (Visual Basic).

    operandtype

    Opcjonalne chyba że Option Strict jest On.Typ danych tego operandu.

  • type
    Opcjonalne chyba że Option Strict jest On.Zwraca typ danych wartości procedury operatora.

  • statements
    Opcjonalne.Blok instrukcji, które uruchamiana jest procedura operatora.

  • returnvalue
    Wymagane.Wartość, która procedura operator zwraca do kodu wywołującego.

  • End Operator
    Wymagane.Kończy definicję tej procedury operatora.

Uwagi

Można użyć Operator tylko w klasie lub strukturze.Oznacza to, kontekście deklaracji podmiot gospodarczy nie może być plik źródłowy, obszar nazw, moduł, interfejs, procedury lub bloku.Aby uzyskać więcej informacji, zobacz Kontekst deklaracji i domyślne poziomy dostępu (Visual Basic).

Wszystkie podmioty gospodarcze muszą być Public Shared.Nie można określić ByRef, Optional, lub ParamArray dla obu operandu.

Symbol operatora lub identyfikator nie można używać do przechowywania wartości zwracanej.Należy użyć Return instrukcji, a należy określić wartość.Dowolna liczba Return sprawozdań może pojawiać się wszędzie w procedurze.

Definiowanie operatora w ten sposób jest nazywany przeciążanie operatora, niezależnie od tego, czy korzystasz z Overloads słowa kluczowego.Poniższa tabela zawiera listę operatorów, które można zdefiniować.

Typ

Podmioty gospodarcze

Jednoargumentowy

+, -, IsFalse, IsTrue, Not

Binarne

+, -, *, /, \, &, ^, >>, <<, =, <>, >, >=, <, <=, And, Like, Mod, Or, Xor

Konwersja (jednoargumentowy)

CType

Należy zauważyć, że = operator binarny listy jest operator porównania, a nie operatora przypisania.

Podczas definiowania CType, trzeba określić albo Widening lub Narrowing.

Parami

Niektóre podmioty gospodarcze muszą zdefiniować jako parami.Można zdefiniować albo operator taki pary, należy zdefiniować inne również.Dopasowane parami są następujące:

  • =i<>

  • >i<

  • >=i<=

  • IsTrueiIsFalse

Ograniczenia dotyczące typu danych

Każdy operator, który definiujesz musi obejmować klasy lub struktury, w którym można zdefiniować.Oznacza to, że klasy lub struktury muszą być ujęte jako typ danych z następujących czynności:

  • Operand operator unarny.

  • Co najmniej jeden z argumentów operatora dwuargumentowego.

  • Operand lub zwracany typ operatora konwersji.

Niektóre podmioty gospodarcze mają dodatkowe dane, ograniczenia, należy wpisać następująco:

  • W przypadku zdefiniowania IsTrue i IsFalse operatorów, muszą one zarówno zwracać Boolean typu.

  • W przypadku zdefiniowania << i >> operatorów, muszą one zarówno określić Integer wpisz operandtype z operand2.

Zwracany typ nie odpowiada typowi albo operandu.Na przykład operator porównania takich jak = lub <> może zwracać Boolean , nawet jeśli żadna operand jest Boolean.

Operatory logiczne i operatory

And, Or, Not, I Xor operatorów można wykonywać operacje logiczne lub operatory w języku Visual Basic.Jednak zdefiniować klasy lub struktury jeden z tych operatorów, można zdefiniować tylko jego operacji na poziomie bitowym.

Nie można zdefiniować AndAlso operatora bezpośrednio z Operator instrukcji.Można jednak użyć AndAlso , jeżeli zostały spełnione następujące warunki:

  • Zostały zdefiniowane And na te same typy operand ma być używany dla AndAlso.

  • Swoją definicję And zwraca tego samego typu co klasy lub struktury, na który zostały zdefiniowane go.

  • Zostały zdefiniowane IsFalse operatora na klasy lub struktury, na który zostały zdefiniowane And.

Podobnie, można użyć OrElse , jeśli zostały zdefiniowane Or na tym samym operandy z zwracany typ klasy lub struktury, a zostały zdefiniowane IsTrue na klasy lub struktury.

Rozszerzanie i zawężanie konwersji

A poszerzenie konwersji zawsze powiedzie się w czasie wykonywania, podczas gdy zawężanie konwersji może się nie powieść w czasie wykonywania.Aby uzyskać więcej informacji, zobacz Rozszerzanie i zwężanie konwersji (Visual Basic).

Przy deklarowaniu procedury konwersji za Widening, kod procedury nie może wygenerować wszelkie błędy.Oznacza to, następujące czynności:

  • Musi zawsze powrócić prawidłowe wartości typu type.

  • To musi obsługiwać wszystkich możliwych wyjątków i innych warunków błędów.

  • To musi obsługiwać wszelkie zwraca błąd z wszelkich procedur, które wywołuje.

Jeśli nie ma żadnej możliwości, że procedury konwersji może się nie powieść, lub że może spowodować, że nieobsłużony wyjątek, należy zadeklarować należy je Narrowing.

Przykład

Następujący kod w przykładzie wykorzystano Operator instrukcji do definiowania konspektu struktury, która zawiera procedury operator And, Or, IsFalse, i IsTrue podmiotów gospodarczych.Andi Or każdego z nich mają dwa operandy typu abc i zwraca typ abc.IsFalsei IsTrue podjąć każdy pojedynczy argument typu abc i zwraca Boolean.Te definicje umożliwienia kodu wywołującego w celu użycia And, AndAlso, Or, i OrElse z argumentem typu abc.

Public Structure abc
    Dim d As Date 
    Public Shared Operator And(ByVal x As abc, ByVal y As abc) As abc
        Dim r As New abc
        ' Insert code to calculate And of x and y. 
        Return r
    End Operator 
    Public Shared Operator Or(ByVal x As abc, ByVal y As abc) As abc
        Dim r As New abc
        ' Insert code to calculate Or of x and y. 
        Return r
    End Operator 
    Public Shared Operator IsFalse(ByVal z As abc) As Boolean 
        Dim b As Boolean 
        ' Insert code to calculate IsFalse of z. 
        Return b
    End Operator 
    Public Shared Operator IsTrue(ByVal z As abc) As Boolean 
        Dim b As Boolean 
        ' Insert code to calculate IsTrue of z. 
        Return b
    End Operator 
End Structure

Zobacz też

Zadania

Porady: definiowanie operatora (Visual Basic)

Porady: definiowanie operatora konwersji (Visual Basic)

Porady: wywoływanie procedury operatora (Visual Basic)

Porady: używanie klasy definiującej operatory (Visual Basic)

Informacje

IsFalse — Operator (Visual Basic)

IsTrue — Operator (Visual Basic)

Widening (Visual Basic)

Narrowing (Visual Basic)

Koncepcje

Rozszerzanie i zwężanie konwersji (Visual Basic)

Procedury operatorów (Visual Basic)