본문 바로가기

Language

Dictionary C# / Dictionary == C++ / unordered_map C# / SortedDictionary == C++ / map C++ / multimap을 통해 중복키를 혀용한다.C# / Dictionary의 경우 중복키 불허용한다. C++ / map 은 key값을 모를때 itorator로 for문을 이용한 순차접근을 해야하지만C# / dictionary는 keyvaluepair로 foreach문을 이용한 순차접근을 해야한다.
ref, out, Tryparse Keyword ref Call by reference 효과를 주게됨 (대신 반드시 값이 할당되어 있어야 한다.) static void Main(string[] args) { Vector v1; v1.X = 5; v1.Y = 10; Change(ref v1); Console.WriteLine(v1); } static void Change(ref Vector vt) { vt.X = 7; vt.Y = 11; } //결과 : x : 7 y : 11 //ref키워드를 사용안한 결과 : x : 5 y : 10 out ref키워드와 동일하게 Call by reference효과를 주며 반드시 값을 할당해야하는 강제성을 주게 된다. (보통 해당 function의 결과값을 인자로 넣고 받고 싶을때, 결과값을 강제하고 싶을때 사용, re..
is, as Keyworkd is 형변환이 가능한지(서로의 타입이 호환 가능한지)를 확인해준다. as Reference type 형변환을 할때 사용한다. Cast보다 is, as 형변환을 사용하자 형변환을 할때마다 as연산자를 사용하는것이 좋은 선택이다. as연산자가 cast연산자를 사용하는 것 보다 더 안정적이고 런타임에 더 효율적이다. as연산자를 사용하면 try/catch구문이 필요가 없으므로 코드가 간결하고 부하가 줄어든다. as연산자는 valu type의 변환은 불가능하다. 변환에 실패하면 null값을 반환하는데 value type에는 null값을 넣을 수 없기 떄문이다. is / as 장점 as와 cast의 가장 큰 차이점은 사용자 정의 변환의 처리이다. as는 사용자가 정의한 연산을 허용하지 않는다. as나 is는 변환..
C#에서의 Get / Set C++에서는 멤버변수들을 priavte으로 두고 사용을 하고싶으면 Get / Set 함수를 직접 구현해야한다. C#에서는 Get / Set을 자동으로 구현해주는데 public bool Level1 { get; set; } 이런식으로 하면 자동으로 get, set을 구현해준다. public bool Level1 { get; } 이렇게하면 쉽게 Read Only Data로 선언할 수 있다. public bool Level1 { set; } 이렇게하면 쉽게 Write Only Data로 선언할 수 있다. (get이나 set 하나만 구현하는 기능은 C# 6버전 이상부터 가능하다.즉 오래된 unity의 경우 사용이 불가능한 문법이다.) 근데 public인데 get set이 의미가 있나 싶기도하고그렇다고 priva..
GC / SGen -Garbage Collector Garbage Collection을 수행하는것 -Garbage Collection 메모리 기법중의 하나로 프로그램이 동적으로 할당했던 메모리 영역중에서 필요없게 된 영역을 해제하는 기능존 매카시가 개발했다.('Mark&Compact Algorithm'을 사용하여 더이상 참조하지 않는 객체를 분별한다.) GC 수집조건은 system의 실제 memory가 부족하거나, Managed heap의 할당된 object에 사용되는 memory가 허용되는 임계값을 초과할때, GC.Collect method를 호출할 떄 작동한다. -장점 유효하지 않은 포인터 접근을 방지해준다.이중해제를 방지해준다.메모리누수를 바지해준다. -단점 어떤 메모리를 해제할지 결정하는데 비용이 많이든다.쓰레기 ..
CLR / CLI / JIT / AOT JIT(Just In Time)컴파일, Dynamic translation(동적번역), 달빅에서 사용하는 방식 프로그램을 실제 실행하는 시점에 기계어로 번역하는 컴파일기법프로그램의 실행 속도를 빠르게 하기위해 사용하며 실행시점에서 interpreter 방식으로 기계어 코드를 생성하면서 그 코드를 Caching하여같은함수가 여러번 호출될때 매번 기계어 코드를 생성하는것을 방지해 준다. JIT 단점 초기 구동시에는 Source code를 runtime에서 Compile하는데 시간과 Memory를 소모하기떄문에 정적 컴파일된 프로그램에 비해 실행속도면에서 손해를 본다.특히 실행시간이 매우 짧은 경우에는 컴파일된 코드를 제대로 사용하기도 전에 프로그램이 끝나는 상황이 벌어지기도 한다. AOT(Ahead Of T..