[C#] object 타입

Learning 

When: 1학년 8월 25일

 

How:

'이것이 C#이다' 라는 책에서 objcet 타입에 대해 들었던 것 같기는 한데, 학교에서 문제로 나오니까 모든 타입 대신 쓸 수 있다는 것 말고는 아무것도 기억이 나지 않아서 다시 공부하게 되었습니다.

 

Understanding:

  • 설명 : object 타입은 모든 타입의 기본 클래스로, object 타입으로 변수를 선언하면 모든 값을 넣을 수 있습니다.
    var와 비슷하게 보일 수도 있지만 var는 컴파일러가 맞는 타입을 대신 넣어주는 대신,
    object는 박싱과 언박싱을 통해 모든 타입을 담을 수 있습니다.
  • 사용 : 아래의 코드는 오브젝트 타입의 변수에 문자열을 대입하고,
    변수 obj의 타입과 string 타입을 is 키워드로 대입하는 코드 입니다. 여기서 is 연산자는 실제로 그 타입이거나
    그 타입을 상속 받았는지에 따라 true 혹은 false를 반환합니다. 여기서 string은 object를 상속받지만 object가
    string을 상속 받는 것은 아니기 때문에 첫 번째 조건은 false이지만, object에 문자열이 들어와
    obj의 타입이 string이 되었기 때문에 두 번째 조건이 만족되어 true를 반환하게 됩니다.
object obj = "Hello";

if (obj is string s)
{
    Console.WriteLine(s); // obj를 string으로 캐스팅한 후 s에 담음
    string str = s;
}
  • 메서드 : 모든 타입은 Object 클래스를 상속하기 때문에, Object에 구현되어있는 메서드 또한 모든 타입에서 사용할 수 있습니다. 아래의 표에 Object 클래스의 메서드들을 정리해 보았습니다.
.ToString() 객체를 문자열로 표현합니다. object 타입은 "System.Object"
.Equals(object 변수) 아무 타입의 객체와 값을 비교합니다. 반환 타입은 bool 값 입니다.
.GetHashCode() 객체를 숫자로 표현한 해시 코드를 반환합니다.
.GetType() 객체의 타입 정보를 반환합니다.
.ReferenceEquals(object a, object b) 두 객체의 주소가 같은지를 bool 값으로 출력합니다.
.MemberwiseClone() 현재 객체의 얕은 복사를 만들어 줍니다.

 

Result: Object 타입을 Unity에서 직접 쓸 일은 많이 없지만, Object가 모든 타입의 시초이기 때문에 사용할 수 있는 메서드들의 출처를 모르고 쓰는 것과 알고 쓰는 것에 차이가 날 것 같고, 알아서 나쁠 것 없다고 생각합니다.

'C#' 카테고리의 다른 글

[C#] 패턴 매칭 (형식, 선언, 상수)  (1) 2025.08.28
[C#] 얕은 복사(Shallow copy)와 MemberwiseClone() 메서드  (1) 2025.08.26
[C#] 튜플  (0) 2025.08.24
[C#] 식 본문 멤버  (0) 2025.08.23
[C#] 인덱서(Indexer)  (0) 2025.08.22