본문 바로가기
[ Program ]/c#스터디

27.Object

by 관이119 2021. 10. 9.

나도 잘하지않지만 모르는게 나오면 msdn 을 찾아보면 좋다.

전체적인 내용이 잘나와있는데 사실 풀어쓴 사람들의 블로그같은 글이 보기 더좋지 사전같은 msdn 은 찾아보기 힘들긴하다.

 

docs.microsoft.com/ko-kr/dotnet/api/system.object.-ctor?view=net-5.0#System_Object__ctor

 

Object 생성자 (System)

Object 클래스의 새 인스턴스를 초기화합니다.Initializes a new instance of the Object class.

docs.microsoft.com

docs.microsoft.com/ko-kr/dotnet/api/system.string?view=net-5.0

 

String 클래스 (System)

텍스트를 UTF-16 코드 단위의 시퀀스로 나타냅니다.Represents text as a sequence of UTF-16 code units.

docs.microsoft.com

docs.microsoft.com/ko-kr/dotnet/api/system.int32?view=net-5.0

 

Int32 구조체 (System)

부호 있는 32비트 정수를 나타냅니다.Represents a 32-bit signed integer.

docs.microsoft.com

위3개의 경로를 보자 저중 우리는 int32 = int 형식 , string 형식은 이미 알고 있다.

저기에 int 와 string 경로에 들어가보면 아래와 같은 부분이 있다.

 

그림1

 

그림2

 

 

그림1과 그림2에서 보면 상속이라는 것이 있는데 프로그램에서 상속도 우리가 일반적으로 생각하는 상속과 같은개념이다.

부모의 특징을 그대로 물려받아서 똑같이 쓸수 있다 라고 이해하면 되겠다.

두가지가 상속을 object 부터 시작해서 자기자신까지 상속을 받고 있다.

이 object 라는 형식은 모든것의 최상위 형식이다.

어떤것도 object 로 형변환이 가능하다는 의미이다.

그림1 에서 보면 알수 있겠지만 string 은 object 를 상속받기때문에 object 의 특성을 그대로 가지고 있고 object 로 형변환도 가능하다.

그림2 를 보면 int타입은 object 와 valuetype 을 상속받고 있는데 이경우는 object 와 valuetype 의 특성을 그대로 가지고 해당형식으로 변환도 가능하다고 유추할수 있다.

 

그런데 object 를 제외한 어떤것을 눌러도 모두 object 로부터 상속이 시작된다.

이 object 라는 형식은 결국 모든것의 근간이 되는 특별한 형태없는 어떤것인 것이다.

아담이나 이브정도라고 생각하자.

우리가 만들지 않았지만 대부분의 프로그램은 object 를 가지고있고 해당특징으로부터 프로그램이 시작된다.

 

정의는 아래와 같이 할 수 있다.

object a = "aaaa";

 

이전에 변수배울때와 완전히 동일한 형태이다.

그런데 이 object 는 모든것의 근간이기때문에 어떤값도 넣을수 있다.

 

object b= 10;

object c = "bbbb";

object d = new string[] {"aaaa","bbbb"};

 

숫자,문자,배열등 어떤것도 넣을수 있다.

그러면 이 object로 모든 형식을 정의해서 사용하면 프로그램이 간단해지지않겠냐 라는 의문도 생길수 있다.

object 로 모든값을 받을수 있지만 사용할때는 다시 실제 사용할형태로 변환해줘야 사용할수 있다.

 

다음예제를 보자.

그림3

 

일반적인 변수사용처럼 사용할 수 없다.

왜냐하면 object 는 무엇이든 될수 있기때문에 컴파일러는 두개의 오브젝트를 더하는 행위가 실제 숫자연산인지 문자열 더하기 인지 알수 없게 되버리기 때문이다.

그래서 만약 object 에 값을 넣어서 더하고 싶다면 다음과같이 코드를 짜야한다.

 

그림4

 

내가 실제로 행위를 하고싶은 형태로 변환해줘야 다른작업을 할수 있다.

출력할때마저도 string으로 변환해줘야 출력을 할 수 있다.

이렇게 모든것의 부모이지만 실제로 잘쓰이지는 않는다.

하지만 지금 우리가 사용하는 코드들에도 찾아보면 object 형식이 보일것이다.

 

기본 프레임워크에서는 개발자가 어떤 코드를 어떻게 만들지 예측조차할수 없기때문에 object 형식을 사용해 알아서 잘변환해서 써라라고 개발자에게 미뤄둔것들이 있다.

그럴때 변환해서 써야하기 때문에 개념을 잘 알아둬야한다.

다른언어에서도 object 는 항상 모든것의 근본이기때문에 모든것은 object 이다 정도로 알아두면 좋겠다.

 

***숙제 :  이제까지 만들었던 프로그램 어디에 object 가 나오는지 찾아보고 캡쳐해서 공유할것. 해당내용에 대해 개인적으로 찾아본내용이 있다면 그내용도 올릴것.

'[ Program ] > c#스터디' 카테고리의 다른 글

29.접근제한자, 네임스페이스 , 클래스  (0) 2021.10.09
28.함수1  (0) 2021.10.09
26.구구단출력기 만들기  (0) 2021.10.09
25.사칙연산기 만들기  (0) 2021.10.09
24.반복문2 - while , foreach  (0) 2021.10.09

댓글