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 |
댓글