Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Perbandingan objek C#

Perbandingan objek C#

PHPz
PHPzasal
2024-09-03 15:03:50908semak imbas

Perbandingan objek C# memainkan korelasi kes-halus bagi dua objek yang serupa dan mengembalikan nilai yang ditunjukkan sama ada satu itu tidak betul-betul, setara dengan atau lebih menonjol daripada yang lain. C# mempunyai banyak pentadbir dan beberapa daripadanya digunakan untuk melihat nilai. Ini adalah tugas yang sangat asas semasa pengaturcaraan – untuk menyemak cara sekurang-kurangnya dua kualiti mengenal pasti antara satu sama lain.

Sintaks:

Public int compare(object s, object p)

Di mana,

S dan p ialah objek pertama dan kedua untuk dibandingkan.

Ia mengembalikan nilai integer yang mewakili nilai kedua-dua objek s dan p.

Bagaimana untuk membandingkan objek dalam C#?

Sekarang kita melihat contoh bagaimana objek membandingkan berfungsi dalam C#.

Contoh #1

using System;
using System.Collections.Generic;
class Someone
{
public string Name { get; set; }
}
class Ex
{
static void Main()
{
var someone = new List<Someone> {
new Someone { Name = "Spandana Rao" } };
Console.WriteLine(
someone.Contains(
new Someone { Name = "Spandana Rao" }));
}
}

Output:

Perbandingan objek C#

Dalam atur cara di atas, atur cara menghasilkan output palsu. Untuk menjadikannya benar, kita perlu membuat isihan tanpa membatalkan teknik Equals atau melaksanakan IEquatable antara muka anda menyerahkan kuasa ke atas cara dua contoh jenis anda akan dianalisis dan mengakui sistem korelasi lalai CLR. Sekiranya jenis anda adalah jenis rujukan (kelas), anda akan mendapat keseimbangan aksara dan jika jenis anda bernilai (struktur), anda akan mendapat keseimbangan penghargaan.

Apabila anda melihat dua kes jenis rujukan (seperti jenis Orang dalam model pertama saya), CLR akan membezakan rujukan dengan item untuk menyemak sama ada rujukan menyerlahkan artikel yang serupa. Dua jenis rujukan mungkin setara jika rujukannya memfokuskan kepada item yang serupa pada tindanan yang diselia. Sekiranya rujukan itu unik, pada ketika itu objek tidak setara – tidak kira sama ada medannya tidak dapat dibezakan.

Kesamaan nilai C# ialah kitaran bergantian namun jauh lebih mudah untuk difahami. Keseragaman berbaloi mengambil semua medan kejadian dalam jenis yang bernilai dan memikirkannya ke medan kejadian contoh kedua dalam permintaan individu. Saya akan membayangkan bahawa keseimbangan penghargaan berfungsi dengan banyak cara yang kebanyakan pereka menjangkakan semua semakan surat-menyurat sepatutnya.

Setiap kali anda menggunakan pentadbir ekuiti selari (==) atau teknik Equals pada jenis rujukan yang anda sedang memanggil Objek. Sama dengan majlis yang dirujuk. Sekiranya anda ingin menawarkan beberapa baki insentif, aktiviti yang paling jelas ialah menggantikan System.Object.Equals dan gunakan teknik ini untuk memikirkan medan dua kejadian anda. Metodologi ini tidak selamat jenis. Memandangkan strategi Equals mengakui perbalahan jenis Objek, kami tidak dapat memastikan bahawa kejadian yang dihantar kepada teknik ini ialah Orang.

Antara muka ini telah dirancang secara eksplisit untuk membantu kami menangani jenis isu kesejahteraan yang kami hadapi. Seperti yang sepatutnya jelas, antara muka ini membolehkan kami membuat penggantian khusus bagi strategi Equals semasa kami. Memandangkan kami mempunyai strategi Equals khusus, apa-apa peperiksaan surat-menyurat yang dilakukan pada dua kali jenis kami akan dilindungi jenis dan selamat tidak sah. Menggunakan sebagai pelakon dalam pelaksanaan lalai menggantikan Equals membenarkan kami lulus sama ada peristiwa Orang atau tidak sah dan penggunaan IEquatable kami. Sama dengan pengembalian palsu yang menjamin bahawa strategi kami tidak akan gagal kerana tidak sah.

Strategi GetHashCode ialah bahagian asas semakan ekuiti personaliti. Kod cincang ialah nilai asas yang merujuk kepada keadaan contoh semasa. Pada asasnya, jika dua kes mempunyai kod cincang yang serupa, ia mungkin sama dengan harga diri. Namun, sekiranya dua artikel tidak mempunyai kod cincang yang serupa, ia pastinya tidak setara dengan nilainya. Teknik ini membenarkan kami mempertimbangkan sokongan kod dan pameran dengan tidak memanggil Equals jika kod cincang tidak menyelaras. Berkenaan dengan pendekatan yang sesuai atau paling ideal untuk mencipta kod cincang untuk contoh item, iaitu perbualan untuk satu hari lagi. Apa yang kami lakukan di sini ialah mengambil dua nombor coprime (23 dan 37) dan menggunakannya untuk mengawal kod cincang keadaan kejadian kami untuk muncul pada nilai penting terakhir. Sekali lagi, cara pengguna berfungsi tidak penting sekarang, apa yang penting ialah kami memberikan beberapa pelaksanaan supaya kami boleh menerima ganjaran pameran yang boleh diberikan oleh GetHashCode. Pada masa ini kami mempunyai kelas yang sesuai menawarkan beberapa semantik surat-menyurat manfaat.

Kesimpulan

Oleh itu, saya ingin membuat kesimpulan dengan menyatakan bahawa, sejak Objek asas. Teknik Equals diasingkan sebagai maya anda boleh menggantikannya dalam mana-mana kelas yang mendapat daripada Object, yang mana semuanya. Perhatikan bagaimana ia mengubah akibat p1.Equals(p3) kerana ia pada masa ini melihat nama dan umur dan bukannya rujukan.

Atas ialah kandungan terperinci Perbandingan objek C#. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel sebelumnya:Pengekodan URL C#Artikel seterusnya:Pengekodan URL C#