Genişletme ve Daraltma Dönüşümleri (Visual Basic)
Önemli bir tür dönüştürmesi ile dönüştürme sonucu hedef veri türü aralık içinde olup olmadığını husustur.
A dönüştürme widening özgün veriler için herhangi bir olası değer sağlayan bir veri türü için bir değer değiştirir.Dönüşümleri genişletmenin, kaynak değeri korumak ancak kendi temsili değiştirebilirsiniz.Tamsayı türü için gelen dönüştürürseniz, böyle Decimal, veya Char için String.
A dönüştürme daraltmaya bazı olası değerleri tutmak mümkün olmayabilir bir veri türü için bir değer değiştirir.Tamsayı türü ve dönüştürülen bir sayısal tür dönüştürüldüğünde, kesirli değere yuvarlanır Boolean ya da sınırlı True veya False.
Dönüşümleri widening
Aşağıdaki tabloda Standart dönüşümler daraltmayı gösterir.
Veri türü |
Veri türleri widens 1 |
SByte, Short, Integer, Long, Decimal, Single, Double |
|
Byte, Short, UShort, Integer, UInteger, Long, ULong, Decimal, Single, Double |
|
Short, Integer, Long, Decimal, Single, Double |
|
UShort, Integer, UInteger, Long, ULong, Decimal, Single, Double |
|
Integer, Long, Decimal, Single, Double2 |
|
UInteger, Long, ULong, Decimal, Single, Double2 |
|
Long, Decimal, Single, Double2 |
|
ULong, Decimal, Single, Double2 |
|
Decimal, Single, Double2 |
|
Single, Double |
|
Double |
|
Numaralandırılan herhangi tür (Enum) |
Kendi temel ayrılmaz türü ve her türlü için temel alınan tür widens. |
Char, String |
|
Chardizi |
Chardizi,String |
Her türlü |
|
Türetilmiş bir tür |
Herhangi bir temel kaynağı türetilmiş tür 3. |
Her türlü |
Bunu uygulayan herhangi bir arabirim. |
Herhangi bir veri türü veya nesne türü. |
1 Tanımına göre her veri türü için kendini widens.
2 Türünden Integer, UInteger, Long, ULong, veya Decimal için Single veya Double duyarlılık kaybı, ancak hiçbir zaman yatırımlara kaybına neden olabilir.Bu anlamda bunlar bilgi kaybı tabi değildir.
3 Türetilmiş bir tür dönüştürme temel türlerinden birine widening olduğunu de şaşırtıcı görünebilir.Bloklama taban türünün bir örneği nitelendiren şekilde türetilmiş bir tür Temel türün tüm üyeleri içerir ' dir.Ters yönde, türetilmiş bir tür tarafından tanımlanan herhangi bir yeni üyeler temel türü içermiyor.
Widening dönüşümler, çalışma zamanında her zaman başarılı ve hiçbir zaman veri kaybı tabi.Her zaman onları dolaylı olarak gerçekleştirebileceğiniz, Option Strict Deyimi geç denetimi türünü ayarlar On veya Off.
Daraltma dönüşümleri
Standart daraltma dönüşümler şunlardır:
Önceki içinde widening dönüşümleri ters yönleri (her tür kendisine widens olmasıdır) tablo
Dönüşümleri arasında her iki yönde Boolean ve herhangi bir sayısal tür
Herhangi bir sayısal tür türünden herhangi numaralandırılan türü (Enum)
Dönüşümleri arasında her iki yönde dize ve herhangi bir sayısal tür Boolean, veya tarihi
Ondan türetilmiş bir tür için bir veri türü veya nesne türünden yazın
Daraltma dönüşümleri her zaman zamanında, başarılı ve başarısız veya veri kaybı tabi.Dönüştürülen değerin hedef veri türü alınamıyor hata durumu oluşur.Örneğin, sayısal dönüştürme taşma ile sonuçlanabilir.Derleyici sürece daraltma dönüştürmeleri örtük olarak gerçekleştirmenize izin vermiyor Option Strict Deyimi geç denetimi türünü ayarlar Off.
[!NOT]
Daraltmaya dönüştürme hatası türünden öğeleri için bastırılmış bir For Each…Next döngü denetim değişkeni koleksiyonu."Daraltmaya dönüşümlerini" bölümünde daha fazla bilgi ve örnekler için bkz: For Each...Next Deyimi (Visual Basic).
Dönüşümleri daraltmaya kullanıldığı durumlar
Hedef veri türü hatası veya veri kaybı olmadan kaynak değer dönüştürülebilir bildiğinizde daraltma dönüşümü kullanın.Örneğin, bir String , "Doğru" veya "Yanlış" içeren bildiğiniz, kullanabileceğiniz CBool kendisine dönüştürmek için anahtar sözcük Boolean.
Dönüştürme sırasında özel durumlar
Dönüşümler her zaman widening başarılı olması, özel durumlar throw değil.Daraltma dönüşümleri, bunlar başarısız olursa, aşağıdaki özel durumlar dışında en sık throw:
InvalidCastException— iki türü arasında dönüştürme tanımlanırsa,
OverflowException— (integral türleri yalnızca) dönüştürülmüş değerini hedef türü için çok büyükse,
Bir sınıf veya yapı tanımlar, bir CType İşlevi (Visual Basic) bir dönüştürme işleci için veya bu sınıf ya da yapı olarak hizmet verecek olan CType onu ödemelerinden uygun herhangi bir özel durum yaratabiliyorsa.Ayrıca, CType sağlayabileceğini Visual Basic işlevleri veya .NET Framework özel durumlar çeşitli sırayla oluþturabilir yöntemleri.
Başvuru türü dönüştürme sırasında değişiklikleri
Dönüştürme bir Başvuru türü işaretçisi değeri kopyalar.Değer kopyalanan kendisi herhangi bir şekilde değiştirilmez.Değiştirebileceğiniz tek şey basılı tutarak fare işaretçisini değişken veri türüdür.Aşağıdaki örnekte, veri türü, temel sınıfa türetilmiş sınıftan dönüştürülür, ancak bu değişkenlerin şimdi işaret eden değişmeden nesnesidir.
' Assume class cSquare inherits from class cShape.
Dim shape As cShape
Dim square As cSquare = New cSquare
' The following statement performs a widening
' conversion from a derived class to its base class.
shape = square
Ayrıca bkz.
Görevler
Nasıl yapılır: Visual Basic'te Bir Nesneyi Başka Bir Türe Dönüştürme
Başvuru
Veri Türü Özeti (Visual Basic)
Tür Dönüştürme İşlevleri (Visual Basic)
Kavramlar
Örtük ve Açık Dönüştürmeler (Visual Basic)
Dizeler ve Diğer Türleri Arasında Dönüştürmeler (Visual Basic)
Dizi Dönüştürmeleri (Visual Basic)