Konversi Implisit dan Eksplisit
Konversikan antarjenis yang kompatibel dengan aman.
Konversi Implisit dan Eksplisit adalah pelajaran C# Academy gratis di CoddyKit. Ini adalah pelajaran 3 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar C# Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus C# Academy mencakup 4 pelajaran total.
Mengonversi Antarjenis
C# dapat mengonversi satu jenis numerik ke jenis numerik lainnya. Sebagian konversi terjadi secara otomatis (implisit), sedangkan konversi lainnya memerlukan konversi eksplisit.
using System;
class Program
{
static void Main()
{
int i = 10;
double d = i; // implicit
int back = (int)d; // explicit
Console.WriteLine(d + ", " + back);
}
}Konversi Implisit (Pelebaran)
Konversi implisit diperbolehkan jika tidak ada data yang hilang, misalnya dari int ke long atau dari int ke double. Tidak diperlukan konversi eksplisit.
using System;
class Program
{
static void Main()
{
int i = 42;
long l = i; // widening, safe
double d = i; // widening, safe
Console.WriteLine(l + ", " + d);
}
}Mengapa Pelebaran Aman
Jenis tujuan dapat merepresentasikan setiap nilai dari jenis sumber, sehingga kompilator mengizinkannya secara diam-diam.
using System;
class Program
{
static void Main()
{
byte b = 200;
int i = b; // byte fits in int
Console.WriteLine("byte " + b + " -> int " + i);
}
}Konversi Eksplisit (Penyempitan)
Konversi eksplisit diperlukan ketika data mungkin hilang, misalnya dari double ke int. Anda menulis (int)value.
using System;
class Program
{
static void Main()
{
double d = 9.78;
int i = (int)d; // truncates toward zero -> 9
Console.WriteLine(i);
}
}Konversi Memotong, Bukan Membulatkan
Mengonversi nilai pecahan menjadi bilangan bulat akan membuang bagian pecahannya, bukan membulatkannya. Gunakan Math.Round terlebih dahulu jika Anda ingin membulatkan.
using System;
class Program
{
static void Main()
{
double d = 7.99;
Console.WriteLine("Cast: " + (int)d);
Console.WriteLine("Round: " + (int)Math.Round(d));
}
}Luapan saat Penyempitan
Jika suatu nilai tidak dapat ditampung oleh jenis tujuan, konversi biasa mungkin membungkus nilainya secara diam-diam. Bungkus konversi tersebut dengan checked agar terjadi galat saat luapan.
using System;
class Program
{
static void Main()
{
int big = 300;
byte wrapped = (byte)big; // 300 wraps to 44
Console.WriteLine("Wrapped: " + wrapped);
try
{
byte safe = checked((byte)big);
Console.WriteLine(safe);
}
catch (OverflowException)
{
Console.WriteLine("checked caught overflow");
}
}
}Kehilangan Presisi
Bahkan beberapa konversi pelebaran, seperti dari long yang sangat besar ke float, dapat kehilangan presisi meskipun tetap bersifat implisit.
using System;
class Program
{
static void Main()
{
long big = 9007199254740993L;
double approx = big; // implicit, may lose precision
Console.WriteLine("long: " + big);
Console.WriteLine("double: " + approx.ToString("F0"));
}
}Karakter dan Konversi Numerik
char secara implisit dikonversi menjadi kode numeriknya, dan Anda dapat mengonversi angka kembali menjadi char secara eksplisit.
using System;
class Program
{
static void Main()
{
char c = 'A';
int code = c; // implicit -> 65
char next = (char)(code + 1); // explicit -> B
Console.WriteLine(code + " -> " + next);
}
}Konversi dalam Ekspresi
Dalam aritmetika campuran, jenis yang lebih kecil secara otomatis dinaikkan menjadi jenis yang lebih besar sebelum operasi dilakukan.
using System;
class Program
{
static void Main()
{
int a = 7;
double b = 2;
double result = a / b; // a promoted to double -> 3.5
Console.WriteLine(result);
}
}Jebakan Pembagian Bilangan Bulat
Jika kedua operand merupakan bilangan bulat, pembagiannya adalah pembagian bilangan bulat. Konversikan salah satunya ke double terlebih dahulu untuk mendapatkan hasil pecahan.
using System;
class Program
{
static void Main()
{
int a = 7, b = 2;
Console.WriteLine("int / int: " + (a / b));
Console.WriteLine("with cast: " + ((double)a / b));
}
}Merangkum Semuanya
Utamakan konversi implisit jika aman, gunakan konversi eksplisit saat melakukan penyempitan, dan waspadai pemotongan, luapan, serta pembagian bilangan bulat.
using System;
class Program
{
static void Main()
{
int total = 17, count = 5;
double average = (double)total / count; // cast to avoid integer division
int rounded = (int)Math.Round(average);
Console.WriteLine("avg=" + average + ", rounded=" + rounded);
}
}Pemeriksaan Singkat
Uji pemahaman Anda tentang konversi.
Ringkasan
Konversi implisit (pelebaran) terjadi secara otomatis ketika tidak ada data yang hilang (int ke tipe bilangan bulat yang lebih besar, int ke tipe bilangan desimal). Konversi eksplisit (penyempitan) memerlukan konversi seperti (int)x dan dapat memotong nilai atau menyebabkan luapan. Gunakan checked untuk menangkap luapan, dan konversikan ke double untuk menghindari pembagian bilangan bulat.
using System;
class Program
{
static void Main()
{
double d = 3.9;
int i = (int)d; // explicit, truncates to 3
long l = i; // implicit widening
Console.WriteLine(i + ", " + l);
}
}Pertanyaan yang Sering Diajukan
Apakah pelajaran “Konversi Implisit dan Eksplisit” gratis?
Ya — teks lengkap “Konversi Implisit dan Eksplisit” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus C# Academy, upgrade ke CoddyKit PRO. Kursus C# Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Konversi Implisit dan Eksplisit”?
Konversikan antarjenis yang kompatibel dengan aman. Kamu berlatih C# Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai C# Academy?
Tidak diperlukan pengalaman sebelumnya. C# Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 3 dari 4.
Berapa lama pelajaran “Konversi Implisit dan Eksplisit” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran C# Academy ini?
Ya. Setiap pelajaran C# Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Tipe Nilai vs Tipe Referensi
- Boxing dan Unboxing
- Konversi Implisit dan Eksplisit
- Kelas Convert dan Parsing