Microsoft MVP성태의 닷넷 이야기
typeof와 GetType의 차이점 질문있습니다. [링크 복사], [링크+제목 복사],
조회: 13139
글쓴 사람
한예지 donator
홈페이지
첨부 파일
 

선생님 안녕하세요!
[질문 1]
교재 150쪽을 보시면 클래스의 이름에서 곧바로 Type을 구하는 방법은 typeof를 사용하면 된다고 말씀하셨는데
typeof(double)에서 double은 클래스가 아니라 구조체인 것으로 알고 있는데 혹시 구조체도 된다는 것을 보여주실려고
double을 입력하신 건가요??
 
[질문 2]
namespace Example
{
    class Program
    {
        static void Main(string[] args)
        {
            // CASE 1
            string s = "hello";
            Type t1 = typeof(string);
            Type t2 = s.GetType();
            if(t1 == t2)
            {
                Console.WriteLine(t1.Name); // String
                Console.WriteLine(t2.Name); // String
            }

            // CASE 2
            object obj = "hello";
            Type t3 = typeof(object);
            Type t4 = obj.GetType();
            if(t3 != t4)
            {
                Console.WriteLine(t3.Name); // Object
                Console.WriteLine(t4.Name); // String ★★★
            }
        }
    }
}

별표 친 곳에 Object가 아닌 이유는 GetType은 런타임에 타입 정보를 뽑아오고
typeof는 컴파일 타임에 타입 정보를 뽑아오기 때문이라고 생각해도 될까요?


[질문 3] typeof와 GetType의 차이점을 다음과 같이 받아들여도 될까요?
typeof
* 클래스의 이름에서 Type을 구해야 한다.
* 컴파일 타임에 타입 정보를 뽑아온다.

GetType
* 클래스의 인스턴스에서 Type을 구해야 한다.
* 런타임에 타입 정보를 뽑아온다.









[최초 등록일: ]
[최종 수정일: 1/21/2021]


비밀번호

댓글 작성자
 



2021-01-22 06시53분
답변 1) 아직 그 단계에서 struct에 대한 설명을 하지 않기 때문에 클래스라고 한 것입니다. 아마도 구조체를 다뤘다면 "타입"이라고 했을 것입니다.

답변 2) GetType이 런타임에 동작하는 것은 맞지만, typeof도 런타임에 가져오는 것입니다. 단지, GetType은 해당 개체가 인스턴스화된 경우에 사용할 수 있고, typeof는 인스턴스 생성을 하지 않았어도 사용할 수 있다는 정도의 차이만 있습니다.

답변 3) 각각 두 번째 항목을 빼면 됩니다.
정성태
2021-01-22 11시00분
[예지] 답변 감사드립니다!!
[guest]

... 31  32  33  [34]  35  36  37  38  39  40  41  42  43  44  45  ...
NoWriterDateCnt.TitleFile(s)
5046엿장수8/22/201814556다이렉트쇼 필터 추가하는데 [2]
5045임도진8/22/201815448c# opencv dll파일 로드 질문 [3]파일 다운로드1
5044엿장수8/20/201815257graphedit 에 등록되어있는 필터를 가져와서 사용하는방법을 알고싶습니다 [2]
5043hori...8/20/201814595Expression에 대한 책의 예제 관련하여 질문드립니다. [1]
5042황윤하8/20/201816907모드버스 TCP 관련 질문 [3]
5041david8/18/201816380.NET WebAPI 에서 Response 지연되는 이유 [3]
5040농상8/14/201815854정규표현식에 대해서 [3]
5039유영태8/14/201817360비동기 소켓사용후 해당 스레드가 남아있을때 처리 방법 [4]파일 다운로드1
5038이정석8/9/201815600서버파일 로컬파일 비교 [2]
5037jjh8/8/201819722c# 으로 화면캡쳐해서 동영상으로 만드는앱을 만들고싶습니다 [6]
5036볼딱지8/8/201817374C# programming 개발 관련 질문이 있습니다. [1]
5035궁금합니...8/8/201817845C# 버전 고민 어떤 책을 사야하나요? [1]
5034신동열8/8/201816206덤프 파일 분석 관련해서 문의 드려요. [1]
5033최규성8/7/201818804C# WinForm, Oracle 9i 로 프로그래밍시 ODP.NET, 배포 설정 방법 질문입니다. [6]
5032이정석8/6/201820399C# 으로 만들 dll 등록 [7]
5031J.S.8/6/201815359System.Array class의 구조에 대한 질문 [1]
5030농상8/4/201815678람다 식을 이용한 메서드 정의 확대를 공부하고 있습니다. [2]
5029Soul...8/3/201815501C# ActiveX 컨트롤 질문드립니다. [4]
5028도토리8/1/201815900혹시 회사에서 TFS 구축시 SQL-Server 라이선스 정책 아시는분 계신지요? [2]
5027농상7/31/201817214Freachable Queue의 발음을 표기하면 어떨까요? [2]
5026농상7/31/201820220소멸자의 이름에 대해서 [2]
5025김기철7/30/201816556selenium 질문좀 드릴개요 [3]
5024농상7/29/201815694패턴 매칭 when에 대해서 질문있습니다. [2]
5023농상7/28/201820186패턴매칭에 대해서 질문 있습니다. [1]
5022농상7/28/201815632튜플에 대해서 건의가 있습니다. [1]
5021농상7/27/201815121예외필터에 대해서 질문이요 [4]
... 31  32  33  [34]  35  36  37  38  39  40  41  42  43  44  45  ...