디시인사이드 갤러리

마이너 갤러리 이슈박스, 최근방문 갤러리

갤러리 본문 영역

[일반] 확실히 동적 타이핑 언어가 배우기가 쉽기 함

papyrus갤로그로 이동합니다. 2024.05.11 18:49:39
조회 146 추천 0 댓글 4
														

public static class MyExtensions

{

    public static string Str(this object obj) 

    {


        if(obj == null) return "null";


        string      dumpStr             = string.Empty;

        System.Type type                = obj.GetType();

        bool        isNoNamespaceClass  = type.Namespace == null; // user defined type

        bool        isList              = type.Name == "List`1";


        if (type.IsEnum) 

        {

            dumpStr += type.Name + "." + obj.ToString();

        }

        else if (isNoNamespaceClass) 

        {

            dumpStr += type.Name + " { ";


            // myType.GetFields는 public field 만 가져온다.

            System.Reflection.FieldInfo[] fi = type.GetFields();


            for(int i = 0; i < fi.Length; i++) 

            {

                string          name                            = fi[i].Name;

                object          value                           = fi[i].GetValue(obj);

                System.Type     valueType                       = value.GetType();

                bool            isValueTypeNoNamespaceClass     = valueType.Namespace == null;

                bool            isValueTypeList                 = valueType.Name == "List`1";


                dumpStr += name;

                dumpStr += " = ";


                if (isValueTypeNoNamespaceClass) 

                {

                    dumpStr += value.Str();

                }

                else if (isValueTypeList)

                {

                    //dumpStr += value.Str<T>();

                }

                else 

                {

                    dumpStr += value.ToString();     

                }

                


                dumpStr += i != fi.Length - 1 ? ", " : string.Empty;

            }


            dumpStr += " }";

        }

        else 

        {

            dumpStr += obj.ToString();

        }


        return dumpStr;

    }


    public static string Str<T> (this List<T> list) 

    {

        string      dumpStr = string.Empty;

        System.Type type    = list.GetType();

        

        dumpStr += "List<" + typeof(T).Name + ">, count = " + list.Count.Str() + ", " + "items = [ ";

        


        for(int i = 0; i < list.Count; i++) 

        {

            dumpStr += Str(list[i]);

            dumpStr += i != list.Count - 1 ? ", " : string.Empty;

        }


        dumpStr += " ]";


        return dumpStr;

    }

}


강좌보고 따라하다가 디버깅이 너무 귀찮아서 


잠깐시간내서  user defined class 나 List<T>, Tuple, Dictionary, Stack, Queue 에 대해


Str 함수를 만드려는데 (ToString은 Extension 으로 override 못함) 


가령 클래스안에 리스트가 있고 리스트 안에 딕셔너리가 있고 뭐 재귀적으로 이리저리 


섞어 있을경우 obj.Str() 하면 public 필드만 뽑아서 출력할 용도 (디버깅목적) 로 만드려는데


이놈의 정적 타이핑하고 제네릭이 까다롭네.


개인적으로 잡다한 문법 익히는데 시간투자하기 싫은데 거참 귀찮음.


동적타이핑언어는 확실히 문법이 심플해서 이런거에 대한 부담이 없네.


갑자기 C# 시작 한게 현타 옴.




추천 비추천

0

고정닉 0

0

댓글 영역

전체 댓글 0
등록순정렬 기준선택
본문 보기

하단 갤러리 리스트 영역

왼쪽 컨텐츠 영역

갤러리 리스트 영역

갤러리 리스트
번호 말머리 제목 글쓴이 작성일 조회 추천
2861 설문 어떤 상황이 닥쳐도 지갑 절대 안 열 것 같은 스타는? 운영자 24/05/20 - -
1 공지 고도엔진 마이너갤러리입니다 Monung갤로그로 이동합니다. 20.04.23 1809 15
116 공지 내가 본 것중 젤 도움된 튜토리얼 [11] ㅇㅇ(121.161) 20.09.15 7436 21
4257 일반 고도 에디터의 자유도 [5] ㅇㅇ갤로그로 이동합니다. 18:59 106 3
4256 질문 어거 어케 한거임?? [6] 바라랑-잡초미갤로그로 이동합니다. 17:37 87 1
4255 일반 4.3 6월에 나오겠지? [4] 정짜르갤로그로 이동합니다. 17:28 56 0
4254 일반 알아도 별로 쓸모없는정보 [5] ㅇㅇ(222.113) 09:35 129 2
4253 창작, 오늘한것 - 테트리스인벤 도전 (#16) (질문포함) [3] ㅇㅇ갤로그로 이동합니다. 05.24 86 3
4252 일반 아 엔진 아직 이해도가 없어서 잘안디ㅗ넹 [3] 고도초보자(222.236) 05.24 87 0
4251 일반 tr() 반대도 이썽? [4] ㅇㅇ(59.17) 05.24 77 0
4250 질문 공격 이미지와 이펙트 이미지 분리되어 있을때 동시에 나오게 할수는 없나? [2] 직캠러(121.144) 05.24 90 0
4249 창작, 겜 개발 근황 [15] ㅇㅇ갤로그로 이동합니다. 05.24 343 14
4248 일반 아 해결함!! [7] 고도초보자(222.236) 05.24 107 0
4247 질문 시그널(또는 함수 포인터 콜백)은 언제 쓰면 좋은가? [7] ㅇㅇ(39.7) 05.24 124 1
4246 일반 4.2.2버전으로 모바일 빌드해서 실행되는거 확인해보신분? [23] 고도초보자(222.236) 05.24 127 0
4245 일반 모바일은 고도3이 나음? [16] 고도초보자(222.236) 05.24 138 0
4244 일반 고도 로그캣 보는 법점. [6] 고도초보자(222.236) 05.23 78 0
4243 일반 firebelley 유데미 강의 진짜 짬이 보이넹 [5] ㅇㅇ(211.220) 05.23 117 1
4242 일반 아우 실행하니까 팅기네 바로 ㅋㅋ [1] 고도초보자(222.236) 05.23 70 0
4241 일반 도와주시오.!!! 모바일 빌드에러 [7] 고도초보자(222.236) 05.23 108 1
4240 창작, 뉴비의 텍겜 제작일지 5 [4] 비베타갤로그로 이동합니다. 05.23 99 0
4239 일반 유데미 고도 강의 추천 해주세용 [4] ㅇㅇ(118.35) 05.23 121 0
4238 일반 신박한 모니터 구입! [7] papyrus갤로그로 이동합니다. 05.23 184 2
4237 일반 코드 정리? 버그 수정? 미래의 내가 하겠지 [3] 마찌롱갤로그로 이동합니다. 05.23 105 0
4236 일반 c#에서 내가 시그널 다루는 법 [2] ㅇㅇ갤로그로 이동합니다. 05.22 137 2
4235 일반 시그널에 집착했는데 안그래도 되나보네 [6] ㅇㅇ (180.71) 05.22 124 0
4234 일반 이거는 체크하면 뭐 적용되는게 있어? [2] ㅇㅇ(59.17) 05.22 94 0
4232 일반 고도 다른 엔진이랑 스타일이 완전히 다르넹 [11] ㅇㅇ(211.220) 05.21 293 0
4231 일반 소리 소문 없이 그냥 출시된 고도엔진 게임이 좀 보이네 [4] 얍얍(175.192) 05.21 213 0
4230 일반 새벽에 심심해서 입문햇는데.. 너무재밌네 [2] ㅁㄴㅇㄹ(121.163) 05.21 155 1
4229 일반 짜릿하구나 나의 재능에 [4] 퀼트갤로그로 이동합니다. 05.21 175 1
4228 일반 세상에서 가장 최적화된 황금 코드를 찾고 싶다. [3] ㅇㅇ갤로그로 이동합니다. 05.21 109 0
4227 일반 오늘한것-병신짓 [7] ㅇㅇ갤로그로 이동합니다. 05.20 146 0
4224 일반 패치 시스템은 어떻게 제작해야 하나요? [10] ㅇㅅㅇ(211.192) 05.20 141 0
4223 엔진 2024년 고도콘이 가을 베를린에서 주최됩니다 [2] ㅇㅇ(222.113) 05.20 112 1
4222 일반 카메라에서 매 프레임마다 마우스 위치로 레이 쏴도 ㄱㅊ? [5] ㅇㅇ(118.235) 05.20 87 1
4220 일반 웹내보내기 공지에 퍼리걸려있으니까 꼴받네 [8] ㅇㅇ갤로그로 이동합니다. 05.20 116 1
4219 일반 3.6버전이 3의 마지막 지원 버전이 아니었네? [3] ㅇㅇ(210.101) 05.20 106 1
4218 일반 child_entered_tree 시그널 정말 좋네요 ㅇㅇ(118.235) 05.20 68 0
4217 일반 게임엔진은 이벤트 발생 순서나 중단같은거 다 관리해주죠?? [2] ㅇㅇ(118.235) 05.20 99 0
4216 창작, Circular menu 만들기 [3] octalog갤로그로 이동합니다. 05.20 130 4
4215 일반 고도로 3d는 무리인가? [6] ㅇㅇ(222.104) 05.19 235 0
4214 일반 뉴비 add_child() 질문 [2] 야스24갤로그로 이동합니다. 05.19 102 0
4213 일반 오늘한것 - 테트리스인벤 도전 (#15) [1] ㅇㅇ갤로그로 이동합니다. 05.19 123 5
4211 일반 마우스휠 막는 법 있음? ㅇㅇ(180.182) 05.19 78 0
4210 일반 매번 당하는 벡터 함정 ㅋㅋ [6] ㅇㅇ(211.199) 05.19 164 0
4209 일반 패널컨테이너 사이즈 왜 자꾸 지랄남?? [6] ㅇㅇ갤로그로 이동합니다. 05.19 94 0
4208 일반 다이얼로그(대사) 관련 툴 추천해주세 ㅇㅇ(211.192) 05.19 59 0
4207 일반 와 고도 엄청 가볍네 [5] ㅇㅇ(211.220) 05.19 178 1
4205 일반 고도 사토루 활! 부! [2] ㅇㅇ(118.235) 05.18 125 0
4204 일반 오늘한것 - 테트리스인벤 도전 (#14) [1] ㅇㅇ갤로그로 이동합니다. 05.18 78 3
4203 일반 고도엔진4 책 탐독 ㅇㅇ(222.106) 05.18 123 0
4202 일반 방황끝 결정했다! [3] papyrus갤로그로 이동합니다. 05.17 195 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2