"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > C# 문자열 비교 : string.equals () 및 == 동등한시기는 언제입니까?

C# 문자열 비교 : string.equals () 및 == 동등한시기는 언제입니까?

2025-03-12에 게시되었습니다
검색:159

String Comparison in C#: When Are `String.Equals()` and `==` Interchangeable?

c# 문자열 비교에서 혼동 : string.equals () 메소드 및 == 연산자가 상호 교환 가능합니까?

C#에서 문자열 비교는 때때로 예기치 않은 결과를 생성합니다. 일반적인 질문은 string.equals () 메소드와 == 동일 부호 연산자가 정확히 동일하게 행동하는지 여부입니다.

다음 코드 스 니펫을 고려하십시오 :

string s = "Category";
TreeViewItem tvi = new TreeViewItem();
tvi.Header = "Category";

Console.WriteLine(s == tvi.Header); // false
Console.WriteLine(s.Equals(tvi.Header)); // true
Console.WriteLine(s == tvi.Header.ToString()); // true
s

s s tvi.header tvi.header tvi ] tvi, == 운영자는 거짓 , string.&&> retyns

이것은 질문을 제기합니다. 왜이 두 가지 비교 방법이 다른 결과를 생성합니까?

string.equals () == 연산자 사이에는 두 가지 근본적인 차이가 있습니다.

유형 특정 구현 : == 연산자는 객체의 컴파일 타임 유형을 기준으로 비교되는 반면 string.equals ()

는 다형성이며, 이는 구현이 비교되는 런타임 유형에 따라 다릅니다.
  1. null 값 처리 : == 연산자는 null 참조를 비교할 때 예외를 던지지 않으며 string.equals ()
  2. 매개 변수가 비어 있으면
  3. nullReferenceException 예외가 발생합니다. 차이점을 보여주는 예 ] 이러한 차이점을 설명하려면 다음 코드를 고려하십시오.

Object X = New StringBuilder ( "Hello"). TOSTRING (); Object Y = New StringBuilder ( "Hello"). ToString (); if (x.equals (y)) // true if (x == y) // false

x

object x = new StringBuilder("hello").ToString();
object y = new StringBuilder("hello").ToString();

if (x.Equals(y)) // True

if (x == y) // False
] y

] 연산자는 false 를 반환합니다. 올바른 비교를 얻으려면 객체를 적절한 유형으로 명시 적으로 변환해야합니다 (이 경우 문자열 ). 문자열 xs = (문자열) x; 문자열 ys = (문자열) y; if (xs == ys) // true 결론에서

string xs = (string)x;
string ys = (string)y;

if (xs == ys) // True
==

연산자는 일반적으로 상호 교환 적으로 사용되지만 구현 및 널 가치 처리에서의 뉘앙스를 이해하는 것이 중요합니다. 신뢰할 수 있고 일관된 문자열 비교를 보장하기 위해, 특히 다른 유형의 객체를 비교하거나 빈 참조를 처리 할 때 string.equals () 메소드가 일반적으로 권장됩니다.

최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3