Perbandingan Equality C# Asp.Net


Terkadang perlu membandingkan dua nilai untuk persamaan. Dalam beberapa kasus, kita menguji persamaan nilai, juga dikenal sebagai ekuivalensi, yang berarti bahwa nilai yang dikandung oleh kedua variabel sama.

Dalam kasus lain, kita harus menentukan apakah dua variabel mengacu pada objek dasar yang sama di memori. Jenis kesetaraan ini disebut persamaan referensi, atau identitas. Topik ini menjelaskan kedua jenis persamaan ini dan menyediakan tautan ke topik lain untuk informasi lebih lanjut.

  • Equality Referrensi

Referensi Equality(persamaan) berarti bahwa dua referensi objek mengacu pada objek dasar yang sama. Hal ini dapat terjadi melalui tugas sederhana, seperti yang ditunjukkan pada contoh berikut.
using System;
class Test
{
    public int Num { get; set; }
    public string Str { get; set; }

    static void Main()
    {
        Test a = new Test() { Num = 1, Str = "Hi" };
        Test b = new Test() { Num = 1, Str = "Hi" };

        bool areEqual = System.Object.ReferenceEquals(a, b);
        // False:
        System.Console.WriteLine("ReferenceEquals(a, b) = {0}", areEqual);

        // Assign b to a.
        b = a;

        // Repeat calls with different results.
        areEqual = System.Object.ReferenceEquals(a, b);
        // True:
        System.Console.WriteLine("ReferenceEquals(a, b) = {0}", areEqual);

        // Keep the console open in debug mode.
        Console.WriteLine("Press any key to exit.");
        Console.ReadKey();
    }
}
Dalam kode ini, dua objek dibuat, namun setelah pernyataan tugas, kedua referensi merujuk ke objek yang sama.

Oleh karena itu mereka memiliki persamaan referensi. Gunakan metode ReferenceEquals untuk menentukan apakah dua referensi mengacu pada objek yang sama. Konsep persamaan referensi hanya berlaku untuk tipe referensi. Objek tipe nilai tidak dapat memiliki persamaan referensi karena ketika sebuah instance dari tipe nilai diberikan ke variabel, salinan nilai dibuat.

Oleh karena itu Anda tidak dapat memiliki dua struct unboxed yang merujuk ke lokasi yang sama di memori. Selanjutnya, jika Anda menggunakan ReferenceEquals untuk membandingkan dua jenis nilai, hasilnya akan selalu salah, walaupun nilai yang ada di objek semuanya identik.

Hal ini karena setiap variabel dikelompokkan menjadi instance objek terpisah.

  • Nilai Equality

Nilai Equality berarti dua objek mengandung nilai atau nilai yang sama. Untuk tipe nilai primitif seperti int atau bool, tes untuk persamaan nilai sangat mudah. Kita bisa menggunakan operator ==, seperti yang ditunjukkan pada contoh berikut.
int a = GetOriginalValue();  
int b = GetCurrentValue();  

// Test for value equality.   
if( b == a)   
{  
    // The two integers are equal.  
}  
Untuk kebanyakan Type  lainnya, pengujian untuk persamaan nilai lebih kompleks karena mengharuskan kita memahami bagaimana tipe mendefinisikannya.

Untuk kelas dan struct yang memiliki banyak bidang atau properti, persamaan nilai sering didefinisikan berarti semua bidang atau properti memiliki nilai yang sama.

Sebagai contoh, dua objek titik dapat didefinisikan setara jika pointA.X sama dengan pointB.X dan pointA.Y sama dengan pointB.Y.
Previous
Next Post »