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

SByte, Short, Integer, Long, Decimal, Single, Double

Bayt

Byte, Short, UShort, Integer, UInteger, Long, ULong, Decimal, Single, Double

Kısa

Short, Integer, Long, Decimal, Single, Double

UShort

UShort, Integer, UInteger, Long, ULong, Decimal, Single, Double

Integer

Integer, Long, Decimal, Single, Double2

UInteger

UInteger, Long, ULong, Decimal, Single, Double2

Uzun

Long, Decimal, Single, Double2

ULong

ULong, Decimal, Single, Double2

Ondalık

Decimal, Single, Double2

Tek

Single, Double

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

Char, String

Chardizi

Chardizi,String

Her türlü

Nesne

Türetilmiş bir tür

Herhangi bir temel kaynağı türetilmiş tür 3.

Her türlü

Bunu uygulayan herhangi bir arabirim.

Hiçbir şey

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

Visual Basic'de Veri Türleri

Ö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)

Diğer Kaynaklar

Visual Basic'de Tür Dönüştürmeleri