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

+ Recent posts