0Pricing
C# Academy · Pelajaran

Metode/tipe generik; batasan

Tulis metode dan tipe generik; tambahkan batasan dengan where T : … (class, struct, new(), antarmuka/dasar).

Metode/tipe generik; batasan adalah pelajaran C# Academy gratis di CoddyKit. Ini adalah pelajaran 1 dari 3. 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 3 pelajaran total.

Ikhtisar generik

Tujuan: Menggunakan kembali kode dengan aman memakai generik.

  • Metode dan tipe generik.
  • Batasan: kelas, struktur, new(), antarmuka/basis.
  • Buat contoh tetap kecil dan jelas.

Metode generik

Sebuah metode generik memiliki daftar parameter tipe, misalnya Identity<T>, dan dapat bekerja untuk banyak tipe.

using System;

// Generic method works for any T
public class Program
{
  static T Identity<T>(T value)
  {
    // just returns what it got
    return value;
  }

  public static void Main(string[] args)
  {
    int a = Identity<int>(5);
    string b = Identity<string>("hi");
    Console.WriteLine(a + " & " + b);
  }
}

Tipe generik

Sebuah tipe generik (seperti Box<T>) dikompilasi sekali dan digunakan dengan banyak tipe konkret.

using System;

// Simple generic type to hold a value
public sealed class Box<T>
{
  private T _value;
  public Box(T value) { _value = value; }
  public T Get() { return _value; }
  public void Set(T value) { _value = value; }
}

public class Program
{
  public static void Main(string[] args)
  {
    Box<int> bi = new Box<int>(10);
    Box<string> bs = new Box<string>("ok");
    Console.WriteLine(bi.Get() + " | " + bs.Get());
  }
}

Batasan new()

Tambahkan where T : new() jika Anda perlu memanggil new T() di dalam kode generik.

using System;

// Factory that can create T with a parameterless ctor
public static class Factory
{
  public static T Create<T>() where T : new()
  {
    return new T(); // allowed thanks to new() constraint
  }
}

public sealed class Person
{
  public string Name;
  public Person() { Name = "Anon"; }
}

public class Program
{
  public static void Main(string[] args)
  {
    Person p = Factory.Create<Person>();
    Console.WriteLine(p.Name);
  }
}

Batasan antarmuka

Batasi T ke sebuah antarmuka atau basis agar Anda dapat memanggil anggotanya (misalnya, IComparable<T>).

using System;

// Min for two values that can be compared
public static class Utils
{
  public static T Min<T>(T a, T b) where T : IComparable<T>
  {
    return a.CompareTo(b) <= 0 ? a : b;
  }
}

public class Program
{
  public static void Main(string[] args)
  {
    Console.WriteLine(Utils.Min(5, 3));          // 3
    Console.WriteLine(Utils.Min("b", "a"));      // a
  }
}

Batasan kelas/struktur & kiat

Batasan lainnya:

  • where T : class → hanya tipe referensi
  • where T : struct → tipe nilai yang tidak dapat bernilai null
  • Gabungkan batasan: where T : class, IDisposable, new()
  • Buat API tetap minimal; utamakan batasan antarmuka demi fleksibilitas.

Makna batasan new()

Pemeriksaan singkat: Batasan mana yang memungkinkan Anda membuat new T() di dalam kode generik?

Ringkasan

Ringkasan: Buat metode/tipe generik dan tambahkan batasan untuk menggunakan anggota yang diperlukan: antarmuka/basis untuk perilaku, class/struct untuk jenisnya, dan new() untuk memanggil konstruktor tanpa parameter.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Metode/tipe generik; batasan” gratis?

Ya — teks lengkap “Metode/tipe generik; batasan” 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 3 pelajaran total.

Apa yang akan aku pelajari di “Metode/tipe generik; batasan”?

Tulis metode dan tipe generik; tambahkan batasan dengan where T : … (class, struct, new(), antarmuka/dasar). 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 1 dari 3.

Berapa lama pelajaran “Metode/tipe generik; batasan” 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. Metode/tipe generik; batasan
  2. Variansi (in/out) dengan antarmuka dan delegasi
  3. Tipe referensi nullable (pemahaman) & anotasi (pola C# 6)
← Kembali ke C# Academy