2011-01-19 11 views
15

Powiel możliwe:
C#: Are string.Equals() and == operator really same?String: operator ==() vs. equals()

Dla porównania ciągów, które podejście jest lepsze (i bezpieczny):

string s1="Sarfaraz"; 
string s2="Nawaz"; 

bool result1 = (s1==s2) ;//approach 1 
bool result2 = s1.Equals(s2) ;//approach 2 

Albo oba są takie same pod maską?

+1

Zależy, czy uważasz, że "pies" i "pies" są tymi samymi słowami, podczas gdy możesz manipulować ciągiem w swoim pierwszym podejściu używając String.Equals (S1, S2, StringComparison.CurrentCultureIgnoreCase) może być przydatny i elegancki. –

+0

@Ramhound: bardzo ładny punkt! – Nawaz

+0

Jednym z ostrzeżeń jest to, że jeśli łańcuchy są zerowe, wyrzucisz wyjątek. Oczywiście, jeśli porównasz ich wartość, to oczekujesz wartości. –

Odpowiedz

14

Podoba mi się Equals(), ponieważ dostępna opcja StringComparison jest bardzo przydatna.

W == i != operatorzy są oparte na wartość, dzięki czemu są bezpieczne w użyciu, choć String to rodzaj odniesienia.

+7

Warto również wspomnieć, że jeśli 's1' ma wartość' null', wyniki będą się różnić. – porges