가능한 중복 : 모든
C#: String.Equals vs. =='=='
안녕하세요.
누군가는 당신이 문자열을 ==와 비교하면 안된다고 말했고 string.equals()를 사용해야하지만 java를 참조한다고 말해주었습니다.
¿ 차이점은 무엇입니까? == 및 string.equals .NET C#에서 무엇입니까?
가능한 중복 : 모든
C#: String.Equals vs. =='=='
안녕하세요.
누군가는 당신이 문자열을 ==와 비교하면 안된다고 말했고 string.equals()를 사용해야하지만 java를 참조한다고 말해주었습니다.
¿ 차이점은 무엇입니까? == 및 string.equals .NET C#에서 무엇입니까?
string == string
은 완전히 String.Equals
과 같습니다. 이것은 정확한 코드입니다 (Reflector에서 제공) :
==
연산자는 String.Equals
메서드를 호출합니다. 그래서 최선으로 메소드 호출을 저장하고 있습니다. 디 컴파일 코드 : C#으로
public static bool operator ==(string a, string b)
{
return string.Equals(a, b);
}
==
및 !=
equals()
가 전화를 문자열 형태로 과부하 된 연산자로 차이가 없다. 이 MSDN page을 참조하십시오.
차이점이 없으므로 운영자 과부하 일뿐입니다. 문자열의 경우 내부적으로 같은 것입니다. 그러나 객체를 비교하는 데 ==를 사용하는 습관을 갖기를 원치 않으므로 문자열에도 사용하지 않는 것이 좋습니다.
C#에서는 문자열에 차이가 없습니다.
당신은 문자열의 사건에 대해주의를 해달라고 한 후이 같은 문화 awarenes 걱정 해달라고하면 ... 더 나은 설명을
봐 here. ==는 개체 유형에 사용하는 경우 하나의 대답은
을 언급 한 바와 같이, 그것은 System.Object.ReferenceEquals에 해결할 수 있습니다.같음 단지 가상 메소드와 같은 행동한다 이므로 무시 버전이 사용된다 (이는 문자열 유형의 내용을 비교 한 경우).
== 실제로 문자열에서 String.Equals을 실행합니다.
당신이 String.Equals를 사용할 때 StringComparision을 지정할 수 있습니다 ....
예 :
MyString.Equals("TestString", StringComparison.InvariantCultureIgnoreCase)
은 대부분, 나는 그것을 코딩 환경 고려하십시오. 선호하는 것을 사용하십시오.
그렇다면, ==는 equals보다 성능이 떨어 집니까? – Caipivara
@Daniel G. R.아니요, 작은 메소드가 just-in-time 컴파일러에 의해 인라인 될 것입니다. 그래서 그것에 대해 걱정하지 마십시오. 그리고 JIT 컴파일시 매우 적은 시간 증가가 있다면, 그것에 대해 걱정할 필요가 없습니다;) –