728x90
반응형
이런 질문을 받은 적이 있다.
"C#에서 string을 비교할 때 ==을 많이 사용하셨는데 ==을 많이 사용하신 이유가 무엇인가요?"
그냥 같다 라는 의미로 사용한거지 별 다른 이유가 없었는데 면접관분께서 좋은 이야기를 해주셨다.
"C#에서 string, int등 상수를 비교 할 때는 Equals()를 사용하는게 좋다. ==은 참조를 비교하는거고 Equals는 값을 비교하는 것이다."
Equals를 알고 있었지만 해당 내용에 대해서는 처음 듣는 이야기여서 하나 더 배웠다는 생각이 든다.
예시를 들자면
public class EX : MonoBehaviour
{
string ex1 = "Hello";
object ex2 = new string("Hello");
private void Ex()
{
if (ex1 == ex2)
{
// 의도하지 않은 참조가 발생했다고 오류 발생
// 참조가 다르기 때문에 해당 부분은 출력되지 않음
Debug.Log("True ex1 If1");
}
if (ex1.Equals(ex2))
{
// 참조가 다르지만 값이 같기 때문에 해당 부분 출력
Debug.Log("True ex1 If2");
}
}
StringBuilder sbText1 = new StringBuilder("Hello");
StringBuilder sbText2 = new StringBuilder("Hello");
private void Ex2()
{
if (sbText1 == sbText2)
{
// 참조가 다르기 때문에 해당 부분은 출력되지 않음
Debug.Log("True ex2 If1");
}
if (sbText1.Equals(sbText2))
{
// 참조가 다르지만 값이 같기 때문에 해당 부분 출력
Debug.Log("True ex2 If2");
}
}
}
해당 부분에서 이렇게 나뉜다. 의도하지 않은 조건식을 만들 수 있기 때문에 상수인 값을 비교한다면 Equals를 사용해야 할 것 같다.
string 뿐만 아니라 int, float등 다양한 자료형도 똑같다.
728x90
반응형
'C#' 카테고리의 다른 글
[C#] Count와 Length (0) | 2023.11.13 |
---|