Pelatihan
Modul
Mengonversi tipe data menggunakan teknik casting dan konversi di C# - Training
Jelajahi menggunakan teknik C# untuk pemeran dan konversi.
Browser ini sudah tidak didukung.
Mutakhirkan ke Microsoft Edge untuk memanfaatkan fitur, pembaruan keamanan, dan dukungan teknis terkini.
Pertimbangan penting dalam konversi jenis adalah apakah hasil konversi berada dalam rentang jenis data tujuan.
Konversi pelebaran mengubah nilai menjadi jenis data yang dapat memungkinkan nilai yang mungkin dari data asli. Konversi pelebaran mempertahankan nilai sumber tetapi dapat mengubah representasinya. Hal ini terjadi jika Anda mengonversi dari jenis integral ke Decimal
, atau dari Char
ke String
.
Konversi penyempitan mengubah nilai menjadi jenis data yang mungkin tidak dapat menahan beberapa nilai. Misalnya, nilai pecahan dibulatkan ketika dikonversi ke jenis integral, dan jenis numerik yang dikonversi menjadi Boolean
dikurangi menjadi True
atau False
.
Tabel berikut menunjukkan konversi pelebaran standar.
Jenis Data | Melebar ke jenis data 1 |
---|---|
SByte | SByte , , Short Integer , Long , Decimal , , Single ,Double |
Byte | Byte , , Short UShort , Integer , UInteger , Long , ULong , Decimal , , Single ,Double |
Pendek | Short , , Integer Long , Decimal , , Single ,Double |
UShort | UShort , , UInteger Integer , Long , ULong , Decimal , , Single ,Double |
Bilangan bulat | Integer , Long , Decimal , Single , Double 2 |
UInteger | UInteger , Long , ULong , Decimal , Single , Double 2 |
Long | Long , Decimal , Single , Double 2 |
ULong | ULong , Decimal , Single , Double 2 |
Desimal | Decimal , Single , Double 2 |
Satu | Single , Double |
Laju | Double |
Tipe terbilang apa pun (Enum) | Jenis integral yang mendasari dan jenis apa pun yang jenisnya dasarnya melebar. |
Char | Char , String |
Char array |
Char array, String |
Jenis apa pun | Objek |
Jenis turunan apa pun | Jenis dasar apa pun dari mana turunan berasal 3. |
Jenis apa pun | Antarmuka apa pun yang diimplementasikan. |
Tidak ada | Jenis data atau jenis objek apa pun. |
1 Menurut definisi, setiap jenis data melebar ke data itu sendiri.
2 Konversi dari Integer
, UInteger
, Long
, ULong
, atau Decimal
menjadi Single
atau Double
dapat mengakibatkan hilangnya presisi, tetapi tidak pernah kehilangan magnitudo. Dalam mempertimbangkan hal ini, mereka tidak menimbulkan kehilangan informasi.
3 Mungkin tampak mengejutkan bahwa konversi dari jenis turunan ke salah satu jenis dasarnya melebar. Justifikasinya adalah bahwa jenis turunan tersebut berisi semua anggota jenis dasar, sehingga memenuhi syarat sebagai instans jenis dasar. Sebaliknya, jenis dasar tidak berisi anggota baru yang ditentukan oleh jenis turunan.
Konversi pelebaran selalu berhasil pada durasi dan tidak pernah menimbulkan kehilangan data. Anda selalu dapat melakukannya secara implisit, apakah Pernyataan Ketat Opsi mengatur peralihan pemeriksaan jenis ke On
atau ke Off
.
Konversi penyempitan standar meliputi konversi berikut:
Arah sebaliknya dari konversi pelebaran dalam tabel sebelumnya (kecuali bahwa setiap jenis melebar ke jenis itu sendiri)
Konversi di kedua arah antara Boolean dan jenis numerik apa pun
Konversi dari jenis numerik apa pun ke tipe terbilang apa pun (Enum
)
Konversi di kedua arah antara String and jenis numerik apa pun, Boolean
, atau Tanggal
Konversi dari jenis data atau jenis objek ke jenis yang merupakan turunan dari jenis tersebut
Konversi penyempitan tidak selalu berhasil pada durasi, dan bisa gagal atau menimbulkan kehilangan data. Kesalahan terjadi jika jenis data tujuan tidak dapat menerima nilai yang dikonversi. Misalnya, konversi numerik dapat mengakibatkan luapan. Pengompilasi tidak mengizinkan Anda untuk melakukan konversi penyempitan secara implisit kecuali Pernyataan Ketat Opsi mengatur sakelar pemeriksaan jenis ke Off
.
Catatan
Kesalahan mempersempit konversi ditekan untuk konversi dari elemen dalam koleksi For Each…Next
ke variabel kontrol perulangan. Untuk informasi dan contoh selengkapnya, lihat bagian "Konversi Penyempitan" di Untuk Setiap...Pernyataan Selanjutnya.
Konversi penyempitan digunakan saat Anda mengetahui nilai sumber dapat dikonversi ke jenis data tujuan tanpa kesalahan atau kehilangan data. Misalnya, jika Anda memiliki String
yang diketahui berisi "True" atau "False," Anda dapat menggunakan kata kunci CBool
untuk mengonversinya ke Boolean
.
Karena konversi pelebaran selalu berhasil, mereka tidak membuat pengecualian. Ketika gagal, konversi penyempitan paling sering membuat pengecualian berikut:
InvalidCastException — jika tidak ada konversi yang didefinisikan di antara dua jenis
OverflowException — (hanya jenis integral) jika nilai yang dikonversi terlalu besar untuk jenis target
Jika kelas atau struktur mendefinisikan Fungsi CType untuk berfungsi sebagai operator konversi ke atau dari kelas atau struktur tersebut, CType
itu dapat membuat pengecualian apa pun yang dianggap sesuai. Selain itu, CType
itu mungkin memanggil fungsi Visual Basic atau metode .NET Framework, yang pada gilirannya dapat membuat berbagai pengecualian.
Konversi dari jenis referensi hanya menyalin penunjuk ke nilai. Nilai itu sendiri tidak disalin atau diubah dengan cara apa pun. Satu-satunya hal yang dapat berubah adalah jenis data variabel yang menyimpan penunjuk. Dalam contoh berikut, jenis data dikonversi dari kelas turunan ke kelas dasarnya, tetapi objek yang sekarang ditunjukkan oleh kedua variabel tidak berubah.
' 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
Umpan balik .NET
.NET adalah proyek sumber terbuka. Pilih tautan untuk memberikan umpan balik:
Pelatihan
Modul
Mengonversi tipe data menggunakan teknik casting dan konversi di C# - Training
Jelajahi menggunakan teknik C# untuk pemeran dan konversi.