c# 을 공부하다보면, 클래스에 아래와 같이 override가 붙은 ToString()본적이 있을텐데요.
이 친구 정체를 알아보도록 하겠습니다.
1. 디폴트 ToString메서드
아래와 같이 간단한 Person 클래스를 만들어보았습니다.
그리고 클래스로 생성한 객체를 그대로 출력해보겠습니다.
어떤 값이 나올까요?
output:
클래스의 이름이 그대로 출력이 됩니다.
해당 값의 타입은 string타입입니다.
자 여기서 우리가 깨달아야할건 이겁니다.
분명 "객체 자체를 출력"했는데, "string형태의 특정값이 출력"된다라는건 내부적으로 해당 클래스명을 string형태로 출력하라는 메서드가 숨어 있다는 겁니다.
정말 그런지 확인해보겠습니다.
2. 커스텀 ToString 메서드
기존 클래스 ToString()이라는 이름의 메서드를 만들어보겠습니다.
그런데 부모 클래스에서 정의된 같은 이름의 ToString() 메서드가 있으니까 오버라이드 해야된다라는 경고 메세지가 뜹니다.
(이 부분이 이해가 안되시는 분들은 상속 포스팅을 읽고 와주시기 바랍니다.)
메세지에서 하라는대로 메서드에 override를 붙히고 아래와 같이 성과 이름이 합쳐진 형태로 리턴값을 반환하도록 수정을 해보았습니다.
그리고 어떤 차이가 있는지 확인하기 위해 다시 출력을 해보겠습니다.
output:
기존에는 단순히 클래스명을 출력했었는데 이번에는 우리가 커스텀한 값이 잘 출력되는걸 알 수 있습니다.
3. 정리
최종적으로 클래스를 생성 후, 그 객체를 출력하면 자동적으로 ToString()메서드가 실행 된다는걸 우리는 알 수 있었습니다.
이 글과 읽으면 좋은글
'c#' 카테고리의 다른 글
[c#] Action, Func, Predicate 개념/ 차이 (0) | 2022.06.16 |
---|---|
[c#] CallerMemberName 어트리뷰트란? (0) | 2022.06.08 |
[c#] array vs array list (둘의 차이점과 사용시기) (0) | 2022.05.26 |
[c#] 2023년 모르면 뒤쳐지는 visual studio 단축키 (2) | 2022.05.25 |
[c# wpf] 마우스 이벤트(더블클릭, 오른쪽클릭, 왼쪽 클릭) 하는법 (0) | 2022.05.25 |
댓글