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 Narrowing
sü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 Widening
sü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 , Optional
veya 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 | + , - , * , , / , \ , & , ^ , , >> , << , = , <> , > , >= , < , , Mod And Like Or <= 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 CType
veya Narrowing
belirtmelisinizWidening
.
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
veIsFalse
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çleriniIsTrue
tanımlarsanız, her ikisinin de türü döndürmesiBoolean
gerekir.ve işleçlerini tanımlarsanız
<<
, her ikisi de için türünüoperand2
operandtype
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 Boolean
olmasa bile döndürebilirBoolean
.
Mantıksal ve Bit Düzeyinde İşleçler
And
, Or
, Not
ve 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
AndAlso
kullanmak 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ırAnd
.
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ı Widening
bildirirseniz, yordam kodunuz herhangi bir hata oluşturmamalıdır. Bunun anlamı:
Her zaman türünde
type
geç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 Narrowing
bildirmeniz gerekir.
Örnek
Aşağıdaki kod örneği, , Or
, IsFalse
ve IsTrue
işleçleri için işleç yordamlarını içeren bir yapının ana hattını tanımlamak için deyimini And
kullanırOperator
. And
ve Or
her biri türünde abc
iki işlenen alır ve türü abc
dö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
, Or
ve OrElse
kullanmasına And
abc
olanak 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