Różnica między == operator a metodą równych w C#?

Różnica między == operator a metodą równych w C#?
C# to szeroko używany język programowania obiektowego, który umożliwia tworzenie aplikacji komputerowych, internetowych i mobilnych. Jedną z podstawowych pojęć w C# jest porównanie wartości, które obejmuje ustalenie, czy dwie wartości są równe przy użyciu operatorów i procedur.

W C# istnieją dwie podstawowe opcje porównywania dwóch wartości - „==” operator i "Równa się()" metoda. Jednak te dwie alternatywy różnią się w ich wdrażaniu i użytkowaniu.

Równość == operator

Aby ustalić, czy dwie zmienne są równe, użyj Operator „==”. Oferuje bardziej wyrafinowane porównanie, ponieważ wygląda na to, czy dwa elementy mają to samo odniesienie, a także tę samą wartość. Oznacza to, że nawet jeśli dwa obiekty mogą mieć tę samą wartość, nie będą one traktowane jednakowo, jeśli będą miały wyraźne odniesienia.

W C#, Operator „==” jest wbudowanym operatorem, którego można użyć do porównywania typów referencyjnych i pierwotnych typów (takich jak int, podwójne, float i bool). Zajęcia i struktury mogą również przeciążyć operator, aby zaoferować unikalną logikę porównawczą w oparciu o stan wewnętrzny obiektów.

Metoda equals ()

"Równa się()" Metoda w C# jest metodą wirtualną, która porównuje dwa obiekty tego samego typu, aby ustalić, czy mają one tę samą wartość lub treść. Tę metodę można zastosować do porównania dwóch ciągów z tą samą wartością, które są przechowywane w różnych lokalizacjach pamięci.

Metoda „equals ()” w C#domyślnie kontrastuje odniesienia do obiektów w przeciwieństwie do ich wartości. Oznacza to, że dwa obiekty o tych samych wartościach, ale wyraźne odniesienia nie byłyby uważane za równe domyślnie. Aby porównać obiekty na podstawie ich wartości, "Równa się()" Metoda musi zostać zastąpiona w klasie.

Jak używać == Operator i Equals () w C#

Oto przykład w C#, który wyraźnie różnicuje „==” Operator i Równa się() Metoda:

za pomocą systemu;
Przestrzeń nazw Comporisonexample
Program klasowy
static void main (string [] args)
String str1 = "Linuxhint";
String str2 = str1;
Konsola.WriteLine („Za pomocą equals () Method: 0”, str1.Równa się (str2));
Konsola.WriteLine („Użycie == Operator: 0”, str1 == str2);
Konsola.Kluczem przeczytać();


W powyższym kodzie tworzone są dwa ciągniki, STR1 i STR2, a STR2 otrzymują przypisanie odniesienia do STR1. Równość obu ciągów jest następnie sprawdzana za pomocą Równa się() Metoda i Operator „==”, a wyniki są wyjściowe. Ponieważ obie zmienne odpowiadają temu samemu obiektowi ciągów w pamięci, obie metody zwracają true.

Wyjście

Operator „==” i Równa się() funkcja traktuje wartości zerowe inaczej. Jeśli obie zmienne są zerowe, Operator „==” można użyć do porównywania wartości zerowych i zwracania prawdziwego. Ale jeśli którakolwiek zmienna jest null, Metoda equals () może podnieść NullreeferenceException. Oznacza to, że aby zapobiec wyjątkowi podczas korzystania z Metoda equals (), Musisz upewnić się, że żadna zmienna nie jest zerowa ani nie wykonać czeku zerowego.

Wniosek

Kluczowa różnica między Operator „==” i Equals () funkcja W C# jest ich logiką porównawczą. Equals () funkcja porównuje wartość dwóch zmiennych lub obiektów, podczas gdy Operator „==” porównuje wartość i odniesienie dwóch. Dodatkowo, podczas gdy Operator „==” jest wbudowanym operatorem, którego nie można zastąpić, Equals () funkcja pozwala poszczególnym klasom oferować określoną logikę porównawczą. Wreszcie różnią się tym, jak traktują wartości zerowych; Metoda equals () podnosi wyjątek, jeśli którakolwiek ze zmiennych jest zerowa.