Bagikan melalui


Hasilkan metode Equals dan GetHashCode ambil alih di Visual Studio

Pembuatan kode ini berlaku untuk:

  • C#

Apa: Memungkinkan Anda menghasilkan metode Equals dan GetHashCode .

Kapan: Hasilkan penimpaan ini ketika Anda memiliki jenis yang harus dibandingkan dengan satu atau beberapa bidang, alih-alih berdasarkan lokasi objek dalam memori.

Mengapa:

  • Jika Anda menerapkan jenis nilai, Anda harus mempertimbangkan untuk mengambil alih metode Equals . Anda dapat memperoleh peningkatan performa atas implementasi default metode Equals pada ValueType saat Anda melakukannya.

  • Jika Anda menerapkan jenis referensi, Anda harus mempertimbangkan untuk mengambil alih metode Equals jika jenis Anda terlihat seperti jenis dasar, seperti Point, String, BigNumber, dan sebagainya.

  • Ambil alih metode GetHashCode untuk memungkinkan jenis berfungsi dengan benar dalam tabel hash. Baca panduan selengkapnya tentang operator kesetaraan.

Panduan

  1. Letakkan kursor Anda di suatu tempat di baris deklarasi jenis Anda.

    public class ImaginaryNumber
    {
        public double RealNumber { get; set; }
        public double ImaginaryUnit { get; set; }
    }
    

    Kode Anda akan terlihat mirip dengan cuplikan layar berikut:

    Cuplikan layar kode yang disorot untuk menerapkan metode yang dihasilkan

    Petunjuk / Saran

    Jangan klik dua kali pilih nama jenis, atau opsi menu tidak akan tersedia. Letakkan kursor di suatu tempat di baris.

  2. Selanjutnya, pilih salah satu tindakan berikut:

    • Tekan Ctrl+. untuk memicu menu Tindakan Cepat dan Pemfaktoran Ulang .

    • Klik kanan dan pilih menu Tindakan Cepat dan Refactoring .

    • Klik cuplikan layar ikon obeng Tindakan Cepat di ikon Visual Studio yang muncul di margin kiri.

  3. Di menu drop-down, pilih Hasilkan Sama Dengan(objek) atau Hasilkan Sama dengan dan GetHashCode.

    Cuplikan layar menu drop-down Hasilkan Penimpaan

  4. Dalam kotak dialog Pilih anggota , pilih anggota yang ingin Anda buat metodenya untuk:

    Buat dialog penimpaan

    Petunjuk / Saran

    Anda juga dapat memilih untuk menghasilkan operator dari dialog ini dengan menggunakan kotak centang di dekat bagian bawah dialog.

    Metode Equals dan GetHashCode dihasilkan dengan implementasi default, seperti yang ditunjukkan dalam kode berikut:

    public class ImaginaryNumber : IEquatable<ImaginaryNumber>
    {
        public double RealNumber { get; set; }
        public double ImaginaryUnit { get; set; }
    
        public override bool Equals(object obj)
        {
            return Equals(obj as ImaginaryNumber);
        }
    
        public bool Equals(ImaginaryNumber other)
        {
            return other != null &&
                   RealNumber == other.RealNumber &&
                   ImaginaryUnit == other.ImaginaryUnit;
        }
    
        public override int GetHashCode()
        {
            return HashCode.Combine(RealNumber, ImaginaryUnit);
        }
    }
    

    Kode Anda akan terlihat mirip dengan cuplikan layar berikut:

    Cuplikan layar hasil metode yang dihasilkan

Lihat juga