Pelajari cara menggunakan antarmuka yang ditentukan sistem

Selesai

Integrasi antarmuka yang ditentukan sistem ke dalam aplikasi C# berguna dalam banyak skenario pengkodean praktis. Antarmuka yang ditentukan sistem di C#, memungkinkan Anda menerapkan fungsionalitas yang telah ditentukan sebelumnya, membuat aplikasi Anda konsisten dan stabil.

Antarmuka umum yang digunakan dalam metode

Beberapa antarmuka umum sering digunakan dalam metode C# dalam kerangka kerja .NET. Antarmuka ini menyediakan fungsionalitas standar yang diterapkan oleh berbagai kelas.

  • IComparable: Digunakan untuk membandingkan objek.
  • IEnumerable: Digunakan untuk melakukan iterasi pada koleksi.
  • IDisposable: Digunakan untuk merilis sumber daya yang tidak dikelola.
  • IEquatable: Digunakan untuk menentukan perbandingan kesetaraan.

Menerapkan antarmuka yang ditentukan sistem

Untuk mengimplementasikan anggota antarmuka yang ditentukan sistem, anggota kelas penerapan yang sesuai harus publik, bukan static, dan memiliki nama dan tanda tangan yang sama dengan anggota antarmuka. Kelas atau struktur yang mengimplementasikan antarmuka harus menyediakan implementasi untuk semua anggota yang dideklarasikan tanpa implementasi default yang disediakan oleh antarmuka.

Antarmuka yang ditentukan sistem di .NET sering menggunakan placeholder T untuk mewakili segala jenis. Misalnya, IEquatable antarmuka didefinisikan dalam kerangka kerja .NET sebagai berikut:

public interface IEquatable
{
    bool Equals(T other);
}

Saat Anda menerapkan antarmuka ini di kelas, Anda mengganti T dengan jenis kelas.

Misalnya, kelas berikut Car mengimplementasikan IEquatable antarmuka:

public class Car : IEquatable
{
    public string Make { get; set; }
    public string Model { get; set; }

    public bool Equals(Car other)
    {
        if (other == null) return false;
        return this.Make == other.Make && this.Model == other.Model;
    }
}

Dalam contoh ini, Car menggantikan T dalam IEquatable, membuatnya IEquatable. Kelas Car menyediakan implementasi metode Equals sendiri, yang memeriksa apakah properti Make dan Model dari objek Car saat ini sama dengan properti dari objek otherCar.

Properti dan pengindeks dari sebuah kelas dapat mendefinisikan akses tambahan pada properti atau pengindeks yang ditentukan dalam sebuah antarmuka. Misalnya, antarmuka mungkin mendeklarasikan properti yang memiliki get aksesor. Kelas yang mengimplementasikan antarmuka dapat mendeklarasikan properti yang sama dengan memiliki pengakses get dan set. Berikut adalah sebuah contoh:

public interface IExampleInterface
{
    string Name { get; }
}

public class ExampleClass : IExampleInterface
{
    public string Name { get; set; }
}

Dalam contoh ini, IExampleInterface mendeklarasikan properti Name dengan get pengakses. ExampleClass mengimplementasikan antarmuka dan mendeklarasikan properti yang sama dengan pengakses get dan set .

Penggunaan antarmuka umum yang ditentukan sistem

Antarmuka umum yang ditentukan sistem seperti IEnumerable, , IDisposabledan IComparable sering digunakan dalam aplikasi .NET. Antarmuka ini menyediakan metode standar yang dapat diimplementasikan untuk memastikan perilaku yang konsisten di berbagai jenis.

IEnumerable (antarmuka pengulangan)

Antarmuka IEnumerable digunakan untuk menentukan koleksi yang dapat dijumlahkan. Ini berisi satu metode, GetEnumerator, yang mengembalikan enumerator yang melakukan iterasi melalui koleksi.

public class MyCollection : IEnumerable
{
    private int[] _items = { 1, 2, 3, 4, 5 };

    public IEnumerator GetEnumerator()
    {
        for (int i = 0; i < _items.Length; i++)
        {
            yield return _items[i];
        }
    }

    IEnumerator IEnumerable.GetEnumerator()
    {
        return GetEnumerator();
    }
}

IDisposable

Antarmuka IDisposable digunakan untuk merilis sumber daya yang tidak dikelola. Sumber daya yang tidak dikelola adalah sumber daya yang tidak ditangani dengan runtime .NET, seperti handel file, koneksi jaringan, dll. Penting untuk merilis sumber daya ini setelah digunakan untuk mencegah kebocoran memori dan masalah lainnya. Ini berisi satu metode, Dispose, yang dipanggil untuk membebaskan sumber daya.

public class ResourceHolder : IDisposable
{
    private bool _disposed = false;

    public void Dispose()
    {
        Dispose(true);
        GC.SuppressFinalize(this); // Prevents the garbage collector from calling the finalizer if Dispose has already been called.
    }

    protected virtual void Dispose(bool disposing)
    {
        if (!_disposed)
        {
            if (disposing)
            {
                // Free managed resources
            }
            // Free unmanaged resources
            _disposed = true;
        }
    }

    ~ResourceHolder()
    {
        Dispose(false);
    }
}

IComparable

Antarmuka IComparable digunakan untuk menentukan metode untuk membandingkan instans kelas. Ini berisi satu metode, CompareTo, yang membandingkan instans saat ini dengan objek lain dengan jenis yang sama.

public class Person : IComparable
{
    public string Name { get; set; }
    public int Age { get; set; }

    public int CompareTo(Person other)
    {
        if (other == null) return 1; // If 'other' is null, this instance is considered greater
        return this.Age.CompareTo(other.Age); // Returns negative value if  precedes 'other', 0 if same position, or postive value if follows 'other'.
    }
}

Dalam contoh ini, jika other null, kami mengembalikan 1, menunjukkan bahwa instans saat ini dianggap lebih besar dari referensi null.

Antarmuka yang ditentukan sistem dalam C# memainkan peran penting dalam menciptakan aplikasi yang efisien, stabil, dan konsisten. Mereka menyediakan metode standar yang dapat diimplementasikan di berbagai jenis, memastikan keseragaman dan prediksi perilaku. Dengan memahami dan menerapkan antarmuka ini secara efektif, Anda dapat menggunakan fungsionalitas yang telah ditentukan sebelumnya dan mengurangi jumlah kode berulang, membuat aplikasi Anda lebih mudah dipertahankan dan kuat.