Operator Deyimi

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

Sözdizimi

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

Parça

attrlist
isteğe bağlı. Bkz. Öznitelik Listesi.

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

Overloads
isteğe bağlı. Bkz. Aşırı Yüklemeler.

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

Shadows
isteğe bağlı. Bkz. Gölgeler.

Widening
belirtmediğiniz Narrowingsürece dönüştürme işleci için gereklidir. Bu işleç yordamının bir Genişletme dönüştürmesi tanımladığını gösterir. Bu Yardım sayfasındaki "Genişletme ve Daraltma Dönüştürmeleri" bölümüne bakın.

Narrowing
belirtmediğiniz Wideningsürece dönüştürme işleci için gereklidir. Bu işleç yordamının bir Daraltma dönüştürmesi tanımladığını gösterir. Bu Yardım sayfasındaki "Genişletme ve Daraltma Dönüştürmeleri" bölümüne bakın.

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

operand1
Gerekli. Bir birli işlecin tek işleneninin (dönüştürme işleci dahil) veya bir ikili işlecin sol işleneninin adı ve türü.

operand2
İkili işleçler için gereklidir. İkili işlecin doğru işleneninin adı ve türü.

operand1 ve operand2 aşağıdaki söz dizimini ve bölümleri içerir:

[ ByVal ] operandname [ As operandtype ]

Bölüm Açıklama
ByVal İsteğe bağlı, ancak geçirme mekanizması ByVal olmalıdır.
operandname Gerekli. Bu işleneni temsil eden değişkenin adı. Bkz. Bildirilen Öğe Adları.
operandtype olmadığı sürece Option Strict isteğe bağlı.On Bu işlenenin veri türü.

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

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

returnvalue
Gerekli. İşleç yordamının çağıran koda döndürdüğü değer.

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

Açıklamalar

Yalnızca bir sınıfta veya yapıda kullanabilirsiniz Operator . 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. her iki işlenen için de , Optionalveya ParamArray belirtemezsinizByRef.

Dönüş değerini tutmak için işleç simgesini veya tanımlayıcısını kullanamazsınız. deyimini Return kullanmanız ve bir değer belirtmesi gerekir. Yordamda herhangi bir yerde herhangi bir sayıda Return deyim görüntülenebilir.

Bir işleci bu şekilde tanımlamak, anahtar sözcüğünü kullansanız da kullanmasanız Overloads da işleç aşırı yüklemesi olarak adlandırılır. Aşağıdaki tabloda tanımlayabileceğiniz işleçler listelenmiştir.

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

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

tanımlarken CTypeveya NarrowingbelirtmelisinizWidening.

Eşleşen Çiftler

Bazı 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 işleç, tanımladığınız sınıfı veya yapıyı içermelidir. Bu, sınıfın veya yapının aşağıdaki veri türü olarak görünmesi gerektiği anlamına gelir:

  • Birli işlecin işleneni.

  • İkili işlecin işlenenlerinden en az biri.

  • bir dönüştürme işlecinin işleneni veya dönüş türü.

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

  • ve IsFalse işleçlerini IsTrue tanımlarsanız, her ikisinin de türü döndürmesi Boolean gerekir.

  • ve işleçlerini tanımlarsanız<<, her ikisi de için türünü operand2operandtype belirtmelidirInteger.>>

Dönüş türünün her iki işlenenin türüne de karşılık gelen olması gerekmez. Örneğin, veya gibi =<> bir karşılaştırma işleci, işlenenin hiçbiri Booleanolmasa bile döndürebilirBoolean.

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

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

işlecini AndAlso doğrudan bir Operator deyimle tanımlayamazsınız. Ancak, aşağıdaki koşulları yerine getirdiyseniz kullanabilirsiniz AndAlso :

  • için AndAlsokullanmak istediğiniz işlenen türlerini tanımlamış And olmanız gerekir.

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

  • işlecini IsFalse tanımladığınız sınıf veya yapıda tanımlamışsınızdır And.

Benzer şekilde, sınıfın veya yapının dönüş türüyle aynı işlenenler üzerinde tanımladıysanız Or ve sınıf veya yapı üzerinde tanımladıysanız IsTrue kullanabilirsinizOrElse.

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

Genişletme dönüştürmesi her zaman çalışma zamanında başarılı olurken , 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.

olarak bir dönüştürme yordamı Wideningbildirirseniz, yordam kodunuz herhangi bir hata oluşturmamalıdır. Bunun anlamı:

  • Her zaman türünde typegeçerli bir değer döndürmelidir.

  • Tüm olası özel durumları ve diğer hata koşullarını işlemelidir.

  • Çağıran tüm yordamlardan gelen hata dönüşlerini işlemelidir.

Dönüştürme yordamının başarılı olma olasılığı varsa veya işlenmeyen bir özel duruma neden olabilirse, olarak Narrowingbildirmeniz gerekir.

Örnek

Aşağıdaki kod örneği, , Or, IsFalseve IsTrue işleçleri için işleç yordamlarını içeren bir yapının ana hattını tanımlamak için deyimini AndkullanırOperator. And ve Or her biri türünde abc iki işlenen alır ve türü abcdöndürür. IsFalse ve IsTrue her biri türünde abc tek bir işlenen alır ve döndürür Boolean. Bu tanımlar, çağıran kodun türündeki işlenenlerle , AndAlso, Orve OrElse kullanmasına Andabcolanak 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.