Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
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
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:
Petunjuk / Saran
Jangan klik dua kali pilih nama jenis, atau opsi menu tidak akan tersedia. Letakkan kursor di suatu tempat di baris.
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
yang muncul di margin kiri.
Di menu drop-down, pilih Hasilkan Sama Dengan(objek) atau Hasilkan Sama dengan dan GetHashCode.
Dalam kotak dialog Pilih anggota , pilih anggota yang ingin Anda buat metodenya untuk:
Petunjuk / Saran
Anda juga dapat memilih untuk menghasilkan operator dari dialog ini dengan menggunakan kotak centang di dekat bagian bawah dialog.
Metode
EqualsdanGetHashCodedihasilkan 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: