안녕하세요. 명월입니다.
이 글은 C#에서 Compare 함수의 결과에 대한 글입니다.
우리가 프로그램을 작성하면 Equals 함수를 참 많이 사용하는데 의외로 Compare 함수는 잘 사용하지 않습니다.
Equals 함수는 단지 데이터가 서로 일치하면 true, 일치하지 않으면 false를 결과가 나와서 좀 더 사용하기 편합니다.
Compare 함수는 물론 그 값이 일치하면 0을 보내 는데 일치하지 않으면 1,-1의 결과가 나옵니다. 여기서 1과 -1의 차이를 정확하게 알아보고자 합니다. 예상으로는 비교 값의 어느 쪽이 크다는 뜻이기는 하는데 항상 헷갈려서 아예 정리를 할까 합니다.
class Program
{
static void Main(string[] args)
{
// 결과값은 0입니다. 역시 비교값이 같으면 결과는 0입니다.
Console.WriteLine((1).CompareTo(1));
// 대상값이 1이고 비교할 값이 2일 경우 결과는 -1입니다. 즉, 대상 값이 작을 경우는 -1이네요.
Console.WriteLine((1).CompareTo(2));
// 대상값이 2이고 비교할 값이 1일 경우 결과는 1입니다. 즉, 대상 값이 클 경우는 1이네요.
Console.WriteLine((2).CompareTo(1));
// t1이 전 날, t2가 현재 일 경우는 -1 입니다. 즉, t1이 t2 보다 과거이면 -1입니다. Tick으로 치면 t1이 데이터가 작습니다.
Console.WriteLine(DateTime.Compare(DateTime.Now.AddDays(-1), DateTime.Now));
// t1이 현재, t2가 다음 날 일 경우는 1 입니다. 즉, t1이 t2 보다 미래면 1입니다. Tick으로 치면 t1이 데이터가 큽니다.
Console.WriteLine(DateTime.Compare(DateTime.Now, DateTime.Now.AddDays(-1)));
// t1.CompareTo(t2) 는 Compare(t1, t2) 와 같습니다.
Console.WriteLine(DateTime.Now.CompareTo(DateTime.Now.AddDays(1)));
// t1.CompareTo(t2) 는 Compare(t1, t2) 와 같습니다.
Console.WriteLine(DateTime.Now.CompareTo(DateTime.Now.AddDays(-1)));
Console.WriteLine("Press any key...");
Console.ReadKey();
}
}
전체적으로 보면 앞의 값이 작으면 -1, 크면 1이네요.
이게 별거 아닌 것 같은데, 항상 소트 식을 만들거나 비교 알고리즘을 만들 때 헷갈려서 콘솔 프로그램 만들어서 확인하곤 합니다. 아예 앞의 값이 작으면 -1, 크면 1로 외워야겠네요.
여기까지 C#의 Compare 함수의 결과에 대한 설명이었습니다.
궁금한 점이나 잘못된 점이 있으면 댓글 부탁드립니다.
'Development note > C#' 카테고리의 다른 글
[C#] String 보간법(interpolation) (0) | 2019.07.05 |
---|---|
[C#] 직렬화 (Serialization) (0) | 2019.06.27 |
[C#] ini 환경 설정 파일을 다루는 방법 (0) | 2019.06.26 |
[C#] 환경설정 파일을 다루는 방법(System.Configuration) (0) | 2019.06.26 |
[C#] HttpConnection을 이용해서 웹 페이지 가져오기 (0) | 2019.06.20 |
[C#] Base64 인코딩, 디코딩하는 방법 (0) | 2019.06.18 |
[C#] 프로그램 실행 경로 (0) | 2019.06.13 |
[C#] NSoup 라이브러리 (XML, HTML 파서) (0) | 2019.06.06 |