Operator Deyimi

Bir sınıf veya yapıda operatör yordamını tanımlayan işleç sembolünü, işlenenleri ve kodu bildirir.

Syntax

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

Bölümler

attrlist
İsteğe bağlı. Bkz. öznitelik listesi.

Public
Gereklidir. Bu işleç yordamının ortak erişime sahip olduğunu gösterir.

Overloads
İsteğe bağlı. Bkz. aşırı yüklemeler.

Shared
Gereklidir. Bu işleç yordamının paylaşılan bir yordam olduğunu gösterir.

Shadows
İsteğe bağlı. Bkz. gölgeler.

Widening
Belirtmediğiniz takdirde bir dönüştürme işleci için gereklidir Narrowing . Bu işleç yordamının bir genişletme dönüşümünü tanımladığını gösterir. Bu Yardım sayfasında "genişletme ve daraltma dönüşümleri" başlığına bakın.

Narrowing
Belirtmediğiniz takdirde bir dönüştürme işleci için gereklidir Widening . Bu işleç yordamının bir daraltma dönüşümünü tanımladığını gösterir. Bu Yardım sayfasında "genişletme ve daraltma dönüşümleri" başlığına bakın.

operatorsymbol
Gereklidir. Bu işleç yordamının tanımladığı işlecin simgesi veya tanımlayıcısı.

operand1
Gereklidir. Birli işlecin tek işleneninin adı ve türü (dönüştürme işleci dahil) veya bir ikili işlecinin sol işleneni.

operand2
İkili işleçler için gereklidir. Bir ikili işlecinin sağ işleneninin adı ve türü.

operand1 ve operand2 aşağıdaki söz dizimi ve bölümlere sahiptir:

[ ByVal ] operandname [ As operandtype ]

Bölüm Description
ByVal İsteğe bağlı, ancak geçen mekanizmanın ByValolması gerekir.
operandname Gereklidir. Bu işleneni temsil eden değişkenin adı. Bkz. tanımlanmış öğe adları.
operandtype Olmadığı müddetçe isteğe bağlıdır Option Strict On . Bu işlenenin veri türü.

type
Olmadığı müddetçe isteğe bağlıdır Option Strict On . İşleç yordamının döndürdüğü değerin veri türü.

statements
İsteğe bağlı. İşleç yordamının çalıştığı deyimler bloğu.

returnvalue
Gereklidir. İşleç yordamının çağırma koduna döndürdüğü değer.

End Operator
Gereklidir. Bu işleç yordamının tanımını sonlandırır.

Açıklamalar

OperatorYalnızca bir sınıf veya yapı içinde kullanabilirsiniz. Bu, bir işlecin bildirim bağlamının kaynak dosya, ad alanı, modül, arabirim, yordam veya blok olamayacağı anlamına gelir. Daha fazla bilgi için bkz. bildirim bağlamları ve varsayılan erişim düzeyleri.

Tüm işleçler olmalıdır Public Shared . ByRef Optional ParamArray Her iki işlenen için, veya belirtemezsiniz.

Dönüş değerini tutmak için işleç sembolünü veya tanımlayıcıyı kullanamazsınız. İfadesini kullanmanız gerekir Return ve bir değer belirtmelidir. Herhangi bir sayıda Return deyim yordamda herhangi bir yerde görünebilir.

Bu şekilde bir işleci tanımlamak işleç aşırı yüklemesi olarak adlandırılır, Overloads anahtar sözcüğünü kullanıp kullanmayacağınızı. Aşağıdaki tabloda, tanımlayabilmeniz için kullanabileceğiniz işleçler listelenmektedir.

Tür İşleçler
Birli +, -, IsFalse, IsTrue, Not
İkili +, -, *, /, \, &, ^, >>, <<, =, <>, >, >=, <, <=, And, Like, Mod, Or, Xor
Dönüştürme (birli) CType

=İkili listedeki işlecin atama işleci değil karşılaştırma operatörü olduğunu unutmayın.

Tanımlarken, ya CType da belirtmeniz gerekir Widening Narrowing .

Eşleşen çiftler

Belirli işleçleri eşleşen çiftler olarak tanımlamanız gerekir. Böyle bir çiftin işlecini tanımlarsanız, diğerini de tanımlamanız gerekir. Eşleşen çiftler şunlardır:

  • = ve <>

  • > ve <

  • >= ve <=

  • IsTrue ve IsFalse

Veri türü kısıtlamaları

Tanımladığınız her operatör, üzerinde tanımladığınız sınıf veya yapıyı içermelidir. Bu, sınıfın veya yapının aşağıdakilerin veri türü olarak görünmesi gerektiği anlamına gelir:

  • Birli işlecin işleneni.

  • Bir ikili işlecinin işlenenlerinden en az biri.

  • Bir dönüştürme işlecinin işleneni ya da dönüş türü.

Bazı işleçler, aşağıdaki gibi ek veri türü kısıtlamalarına sahiptir:

  • IsTrueVe IsFalse işleçlerini tanımlarsanız, her ikisi de Boolean türü döndürmelidir.

  • Ve işleçlerini tanımlarsanız, << >> her ikisi de Integer öğesinin türünü belirtmelidir operandtype operand2 .

Dönüş türünün, her iki işlenenin türüne karşılık gelmesi gerekmez. Örneğin, veya gibi bir karşılaştırma işleci = <> Boolean , hiçbir işleneni olmasa bile dönebilir Boolean .

Mantıksal ve Bit Düzeyinde İşleçler

And,, Or Not ve Xor işleçleri Visual Basic mantıksal veya bit tabanlı işlemler gerçekleştirebilir. Ancak, bu işleçlerden birini bir sınıf veya yapıda tanımlarsanız, yalnızca bit düzeyinde işlemini tanımlayabilirsiniz.

AndAlsoİşleci bir ifadesiyle doğrudan tanımlayamazsınız Operator . Ancak, AndAlso aşağıdaki koşulları karşıladıysanız kullanabilirsiniz:

  • Andİçin kullanmak istediğiniz aynı işlenen türlerinde tanımladınız AndAlso .

  • Tanımınız, And tanımladığınız sınıf veya yapı ile aynı türü döndürür.

  • IsFalseİşleci, tanımladığınız sınıf veya yapı üzerinde tanımladınız And .

Benzer şekilde, OrElse Or sınıf veya yapının dönüş türü ile aynı işlenenler üzerinde tanımlamış olmanız ve IsTrue sınıf veya yapıda tanımladığınız durumlarda kullanabilirsiniz.

Genişletme ve Daraltma Dönüşümleri

Her zaman çalışma zamanında bir daraltma dönüştürmesi başarısız olsa da, bir daraltma dönüştürmesi çalışma zamanında başarısız olabilir. Daha fazla bilgi için bkz. genişletme ve daraltma dönüştürmeleri.

Bir dönüştürme yordamı belirtmek isterseniz Widening , yordam kodunuzun herhangi bir başarısızlık üretmemelidir. Bunun anlamı:

  • Her zaman geçerli bir tür değeri döndürmelidir type .

  • Tüm olası özel durumları ve diğer hata koşullarını ele almalıdır.

  • Çağrı yaptığı tüm yordamlardan hata getirlerinin işlenmesi gerekir.

Bir dönüştürme yordamının başarılı bir şekilde başarısız olabileceği veya işlenmemiş bir özel duruma neden olabileceği durumlarda, bunu olarak bildirmeniz gerekir Narrowing .

Örnek

Aşağıdaki kod örneği , , ve işleçleri için işleç yordamları içeren bir yapının ana hatlarını tanımlamak Operator And için Or IsFalse IsTrue deyimini kullanır. And ve Or her biri türünde ve dönüş türünde iki işlenen abc abc alır. IsFalse ve IsTrue her biri türünde tek bir işlenen alır ve abc dönüşünü Boolean alır. Bu tanımlar, çağıran kodun And türünde işlenenlerle AndAlso , , ve Or OrElse kullanmasına olanak abc sağlar.

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

Ayrıca bkz.