c# string like - C #에서 문자열 비교 방법의 차이점





5 Answers

MSDN에서 :

"CompareTo 메서드는 주로 정렬 작업이나 알파벳순으로 사용하기 위해 디자인되었으므로 메서드 호출의 주 목적은 두 문자열이 같은지 여부를 확인하는 것이므로 사용해서는 안됩니다. 두 문자열이 동일한 지 여부를 확인하려면 Equals 메서드를 호출하십시오. "

이들은 평등만을 바라 볼 때 .Equals 대신 .Equals 를 사용할 것을 제안합니다. string 클래스에 대해 .Equals== 사이에 차이가 있는지 확실하지 않습니다. 나중에 누군가가오고 그 클래스에 대해 == 연산자를 재정의하는 경우에 대비 Object.ReferenceEquals 때로는 .Equals 또는 Object.ReferenceEquals 를 사용 Object.ReferenceEquals 내 자신의 클래스에 == 를 추가합니다.

검색 정렬 특정

C #에서 문자열 비교는 매우 간단합니다. 사실 여러 가지 방법이 있습니다. 나는 아래 블록에 몇 가지를 열거했다. 내가 궁금한 점은 그들 사이의 차이점과 다른 것들 위에 사용해야한다는 점입니다. 반드시 모든 비용을 피해야합니까? 내가 더 이상 열거하지 않았습니까?

string testString = "Test";
string anotherString = "Another";

if (testString.CompareTo(anotherString) == 0) {}
if (testString.Equals(anotherString)) {}
if (testString == anotherString) {}

(참고 : 나는이 예에서 평등을 찾고 있는데, 그보다 크거나 크지는 않지만 그것에 대해서도 자유롭게 의견을 말함)




Ed 말했듯이, CompareTo는 정렬에 사용됩니다.

그러나 .Equals와 == 사이에는 차이가 있습니다.

== 다음 코드를 본질적으로 해결합니다 :

if(object.ReferenceEquals(left, null) && 
   object.ReferenceEquals(right, null))
    return true;
if(object.ReferenceEquals(left, null))
    return right.Equals(left);
return left.Equals(right);

간단한 이유는 다음과 같은 예외가 throw됩니다 :

string a = null;
string b = "foo";

bool equal = a.Equals(b);

그리고 다음은하지 않습니다 :

string a = null;
string b = "foo";

bool equal = a == b;



그 성능은 일반적으로 99 %의 시간에 문제가되지 않지만, 이것을 수백만 번 반복해야만한다면 나는 문자를 찾자 마자 .Equals 또는 ==를 사용하는 것이 좋습니다. 그것과 일치하지 않는 것은 모든 것을 false로 던지지만 CompareTo를 사용하면 어떤 캐릭터가 다른 캐릭터보다 작 으면 알아 내야하기 때문에 성능이 약간 떨어집니다.

앱이 다른 국가에서 운영되는 경우 CultureInfo에 대한 의미를 살펴보고 .Equals를 사용하는 것이 좋습니다. 나는 정말 미국을위한 앱을 작성하기 때문에 (누군가가 제대로 작동하지 않는지 상관하지 않는다.) 항상 ==를 사용한다.




주의해야 할 큰 차이점은 .Equals ()는 첫 번째 문자열이 null 인 경우 예외를 throw하지만 Where ==는 예외가 아닙니다.

       string s = null;
        string a = "a";
        //Throws {"Object reference not set to an instance of an object."}
        if (s.Equals(a))
            Console.WriteLine("s is equal to a");
        //no Exception
        if(s==a)
            Console.WriteLine("s is equal to a");



.Equals를 사용하면 읽기가 훨씬 쉽습니다.




Related