본문 바로가기
C#/책 정리

C# 정리 ) Equals

2021. 11. 28.

Equals 메서드는 값을 비교한 결과를 bool 형으로 반환한다.

using System;

namespace Project1
{
    class Class1
    {
        public static void Main(String[] args)
        {
            int n = 5;
            if (n.Equals(5))
            {
                Console.WriteLine("n은 5 입니다!");
            }
            else
            {
                Console.WriteLine("n은 5 가 아닙니다!");
            }
        }
    }
}

출력 결과 :

n은 5 입니다!

 

Equals 는 비교 대상이 [값 형식]과 [참조 형식] 에 대해 달라진다.

[값 형식]에 대해서는 해당 인스턴스가 소유하고 있는 값을 대상으로 비교한다.

[참조 형식]에 대해서는 할당된 메모리 위치를 가리키는 [식별자]의 값이 같은지를 비교한다

 

[식별자] : 변수, 함수, 클래스 등의 이름

 

[값 형식]

using System;

namespace Project1
{
    class Class1
    {
        public static void Main(String[] args)
        {
            int n = 5;
            int n2 = 5;
            Console.WriteLine(n.Equals(n2));
            n2 = 6;
            Console.WriteLine(n.Equals(n2));
        }
    }
}

출력 결과 :

True 

False

 

 [참조 형식]

using System;

namespace Project1
{
    class book
    {
        decimal isbn;
        public book(decimal isbn)
        {
            this.isbn = isbn;
        }
    }
    class Class1
    {
        public static void Main(String[] args)
        {
            book b1 = new book(9788998139018);
            book b2 = new book(9788998139018);

            Console.WriteLine(b1.Equals(b2));
        }
    }
}

출력 결과 :

False

 

b1과 b2는 동일한 값을 가진 인스턴스이다.

하지만 Equals 메서드는 False를 리턴했는데, 이는 new book(~) 으로 생성된 인스턴스들의 힙 메모리 위치가 다르기 때문에 그 안에 들어있는 값에 상관없이 Equals 는 False를 리턴하게 되는것이다.

 

'C# > 책 정리' 카테고리의 다른 글

C# 정리 ) System.Array  (0) 2021.11.29
C# 정리 ) GetHashCode  (0) 2021.11.29
C# 정리 ) GetType  (0) 2021.11.28
C# 정리 ) ToString  (0) 2021.11.28
C# 정리 ) System.Object  (0) 2021.11.28

댓글