Menguasai Konversi Tipe C#: Implisit, Eksplisit, Parse, dan Metode Convert
Menguasai Konversi Tipe C#
Pelajari cara mengonversi antar tipe data dalam C#—dari cast implisit dan eksplisit hingga API Parse dan Convert yang canggih—dengan contoh yang jelas dan panduan praktik terbaik.
Konversi tipe—mengubah nilai dari satu tipe data ke tipe lain—adalah keterampilan inti dalam C#. Memahami kapan dan cara menggunakan setiap metode konversi memastikan kode Anda aman dan efisien.
Dalam C#, konversi terbagi menjadi dua kategori luas:
- Konversi Tipe Implisit
- Konversi Tipe Eksplisit (casting)
1. Konversi Tipe Implisit dalam C#
Konversi implisit dilakukan secara otomatis oleh kompiler ketika tidak ada kehilangan data yang dapat terjadi. Konversi ini aman dan tidak membebani sintaks.
Skenario umum melibatkan konversi tipe numerik yang lebih kecil ke tipe yang lebih besar—misalnya, int ke double—sehingga nilai dapat direpresentasikan tanpa pemotongan.
Contoh: Konversi Tipe Implisit
using System; namespace MyApplication { class Program { static void Main(string[] args) { int numInt = 500; // Konversi implisit double numDouble = numInt; Console.WriteLine($"nilai numInt: {numInt}"); Console.WriteLine($"Tipe numInt: {numInt.GetType()}"); Console.WriteLine($"nilai numDouble: {numDouble}"); Console.WriteLine($"Tipe numDouble: {numDouble.GetType()}"); Console.ReadLine(); } } }
Output
nilai numInt: 500 Tipe numInt: System.Int32 nilai numDouble: 500 Tipe numDouble: System.Double
Karena double memiliki kapasitas yang lebih besar, kompiler dengan aman mempromosikan nilai int tanpa risiko overflow.
Catatan: Konversi implisit tidak pernah kehilangan data, tetapi meningkatkan ukuran tipe yang dihasilkan.
2. Konversi Tipe Eksplisit (Casting) dalam C#
Konversi eksplisit, atau cast, digunakan saat mengonversi dari tipe yang lebih besar ke tipe yang lebih kecil atau antar tipe yang tidak terkait. Pengembang harus menunjukkan niat, dan kompilonya mungkin memberikan peringatan jika konversi dapat membuang data.
Contoh: Konversi Tipe Eksplisit
using System; namespace MyApplication { class Program { static void Main(string[] args) { double numDouble = 1.23; int numInt = (int)numDouble; // Cast eksplisit Console.WriteLine($"Nilai double asli: {numDouble}"); Console.WriteLine($"Nilai int yang dikonversi: {numInt}"); Console.ReadLine(); } } }
Output
Nilai double asli: 1.23 Nilai int yang dikonversi: 1
Cast memotong bagian pecahan, sehingga 1.23 menjadi 1. Jika presisi penting, pertimbangkan untuk menggunakan metode pembulatan sebelum casting.
Catatan: Casting juga disebut type casting.
3. Mengonversi String dengan Parse()
Saat mengonversi dari string ke tipe numerik, int.Parse, double.Parse, dll., memberikan pendekatan yang sederhana dan aman jenis.
Contoh: Menggunakan int.Parse
using System; namespace Conversion { class Program { static void Main(string[] args) { string n = "100"; int a = int.Parse(n); Console.WriteLine($"Nilai string asli: {n}"); Console.WriteLine($"Nilai int yang dikonversi: {a}"); Console.ReadLine(); } } }
Output
Nilai string asli: 100 Nilai int yang dikonversi: 100
Mencoba untuk memparsing string non-numerik, seperti "test", akan melempar FormatException. Dalam kode produksi, bungkus panggilan dalam try-catch atau gunakan int.TryParse untuk menangani kesalahan dengan anggun.
4. Kelas Convert
Kelas statis Convert menawarkan sekelompok metode luas untuk mengonversi antar banyak tipe data, seringkali melakukan pemeriksaan yang diperlukan secara internal.
| Metode | Deskripsi |
ToBoolean() | Mengonversi nilai menjadi bool |
ToChar() | Mengonversi nilai menjadi char |
ToDouble() | Mengonversi nilai menjadi double |
ToInt16() | Mengonversi nilai menjadi int 16-bit |
ToString() | Mengonversi nilai menjadi string |
Di bawah ini adalah contoh ilustratif yang mencakup konversi umum.
Contoh: int → string dan double
using System; namespace Conversion { class Program { static void Main(string[] args) { int num = 100; Console.WriteLine($"nilai int: {num}"); string str = Convert.ToString(num); Console.WriteLine($"nilai string: {str}"); double dbl = Convert.ToDouble(num); Console.WriteLine($"Nilai Double: {dbl}"); Console.ReadLine(); } } }
Output
nilai int: 100 nilai string: 100 Nilai Double: 100
Contoh: string ↔ double
using System; namespace Conversion { class Program { static void Main(string[] args) { string str = "99.99"; Console.WriteLine($"Nilai string asli: {str}"); double dbl = Convert.ToDouble(str); Console.WriteLine($"Nilai Double yang dikonversi: {dbl}"); double num = 88.9; Console.WriteLine($"Nilai double asli: {num}"); string newStr = Convert.ToString(num); Console.WriteLine($"Nilai string yang dikonversi: {newStr}"); Console.ReadLine(); } } }
Output
Nilai string asli: 99.99 Nilai Double yang dikonversi: 99.99 Nilai double asli: 88.9 Nilai string yang dikonversi: 88.9
Contoh: int → bool
using System; namespace Conversion { class Program { static void Main(string[] args) { int num1 = 0; int num2 = 1; bool bool1 = Convert.ToBoolean(num1); bool bool2 = Convert.ToBoolean(num2); Console.WriteLine($"Nilai Boolean dari 0 adalah: {bool1}"); Console.WriteLine($"Nilai Boolean dari 1 adalah: {bool2}"); Console.ReadLine(); } } }
Output
Nilai Boolean dari 0 adalah: False Nilai Boolean dari 1 adalah: True
Catatan: Dalam C#, 0 ditafsirkan sebagai false; bilangan bulat non-nol mengevaluasi menjadi true.
Dengan menguasai teknik konversi ini, Anda dapat menulis kode yang aman jenis dan ekspresif, mengurangi kesalahan runtime dan meningkatkan keterbacaan.