0Pricing
C# Academy · Pelajaran

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

  1. Tipe Nilai vs Tipe Referensi
  2. Boxing dan Unboxing
  3. Konversi Implisit dan Eksplisit
  4. Kelas Convert dan Parsing
← Kembali ke C# Academy