'=='

2011-04-26 2 views
5

가능한 중복 : 모든
C#: String.Equals vs. =='=='

안녕하세요.

누군가는 당신이 문자열을 ==와 비교하면 안된다고 말했고 string.equals()를 사용해야하지만 java를 참조한다고 말해주었습니다.

¿ 차이점은 무엇입니까? == 및 string.equals .NET C#에서 무엇입니까?

답변

15

string == string은 완전히 String.Equals과 같습니다. 이것은 정확한 코드입니다 (Reflector에서 제공) :

+0

그렇다면, ==는 equals보다 성능이 떨어 집니까? – Caipivara

+2

@Daniel G. R.아니요, 작은 메소드가 just-in-time 컴파일러에 의해 인라인 될 것입니다. 그래서 그것에 대해 걱정하지 마십시오. 그리고 JIT 컴파일시 매우 적은 시간 증가가 있다면, 그것에 대해 걱정할 필요가 없습니다;) –

1

== 연산자는 String.Equals 메서드를 호출합니다. 그래서 최선으로 메소드 호출을 저장하고 있습니다. 디 컴파일 코드 : C#으로

public static bool operator ==(string a, string b) 
{ 
    return string.Equals(a, b); 
} 
3

==!=equals()가 전화를 문자열 형태로 과부하 된 연산자로 차이가 없다. 이 MSDN page을 참조하십시오.

0

차이점이 없으므로 운영자 과부하 일뿐입니다. 문자열의 경우 내부적으로 같은 것입니다. 그러나 객체를 비교하는 데 ==를 사용하는 습관을 갖기를 원치 않으므로 문자열에도 사용하지 않는 것이 좋습니다.

0

C#에서는 문자열에 차이가 없습니다.

0

당신은 문자열의 사건에 대해주의를 해달라고 한 후이 같은 문화 awarenes 걱정 해달라고하면 ... 더 나은 설명을

1

here. ==는 개체 유형에 사용하는 경우 하나의 대답은

을 언급 한 바와 같이, 그것은 System.Object.ReferenceEquals에 해결할 수 있습니다.

같음 단지 가상 메소드와 같은 행동한다 이므로 무시 버전이 사용된다 (이는 문자열 유형의 내용을 비교 한 경우).

3

== 실제로 문자열에서 String.Equals을 실행합니다.

당신이 String.Equals를 사용할 때 StringComparision을 지정할 수 있습니다 ....

예 :

MyString.Equals("TestString", StringComparison.InvariantCultureIgnoreCase) 

은 대부분, 나는 그것을 코딩 환경 고려하십시오. 선호하는 것을 사용하십시오.