본문 바로가기

Language/C#

강한참조 / 약한참조(WeakReference) 강한참조 일반적으로 new 할당 후 새로운 객체를 만들어 해당객체를 참조하는방식이다.할당된 객체를 해지하기 위해 null값을 넣어도 새로운 객체가 참조를 하고 있어GC가 수집해 가지 않는다. 약한참조 WeakReference를 이용하여 new할당된 객체를 참조하는 방식이다.할당된 객체를 해지하기 위해 null값을 넣으면 WeakReference객체가 참조를 하고 있어도약한 참조를 하고 있기 때문에 GC가 수집해가서 할당된 객체는 사라지고 weakreference 객체는 null값을 가지게 된다. //new 할당할 객체 2개 stock phone; stock notebook; //각각 강한참조객체와 약한참조 객체 stock stock1; WeakReference stock2; public void Test..
.NET Reflection .NET Reflection .NET Reflection은 .NET 객체의 class type, method, property등의 meta information을 runtime중에 알아내는 기능을 제공한다.또한, 이러한 meta information을 얻은 후 직접 method를 호출하거나 property를 변경하는 등의 작업도 가능하다.물론 객체에서 method를 직접 호출하는 경우가 더 빠르겠지만 어떤 경우는 runtime중에 이런 meta information을 동적으로 알아낼필요가 있다.예를들어 test assembly에 있는 test class들의 public method를 선별해서 이를 동적으로 호출하는 경우라든가특정 class안에 지정된 이름의 member가 있는지 판단하는 경우 등이 있다...
Generalization Generalization(일반화) Generalization는 서로 다른 개념에서 공통점을 찾는것이다. 'A', 'B', 'C'는 다른 단어지만 '영어'라는 공통점을 가지며 int, float, string은 다른 type이지만 '변수'라는 공통점을 가진다. 위처럼 어떤 개념을 포괄하는 공통된 개념을 찾아 서로 다른 개념을 하나로 묶어주는것이다. void print(int A) { Console.WriteLine(A); } void print(float B) { Console.WriteLine(B); } void print(string C) { Console.WriteLine(C); } //위 3개 method를 generalization한 method void print(T value) { Conso..
Boxing / UnBoxing Boxing 값형식을 참조형식으로 변환하는것Boxing은 내부적으로 stack영역에서 heap영역으로 data가 copy되고그 copy된 data를 object가 참조하게 된다.(값형식 -> 참조형식) UnBoxing 참조방식을 값형식으로 변환하는것UnBoxing이 되면 data를 heap영역에서 stack영역으로 copy한다.(참조형식 -> 값형식) 참고https://mrw0119.tistory.com/16
Collection의 성능문제 / Generic Collection C# Collection의 경우 type을 object type으로 저장하기 때문에 하나의 collection안에 다양한(int, bool, string) type들을 보관할 수 있다.하지만 이것이 성능상 단점을 유발하게된다. Collection은 data를 받으면 어떤 형식이든지 object type으로 Boxing되어 저장되고data에 접근하여 사용할때는 원래의 data type으로 UnBoxing하게되는데 알다싶이 Boxing, UnBoxing하는것은 비용이 들게 되고 따라서 data가 많아지고 data의 입출력이 잦아질 경우Boxing, UnBoxing의 횟수가 늘어나 성능저하가 발생하게 된다. 이러한 문제때문에 Generic Collection을 사용한다. using System.Collecti..
C# 제네릭 https://slaner.tistory.com/122 잘 설명이 되어있다.
GC를 유발하는 몇가지 Case ToString(), ToArray()등의 data converting method C#에서 지원하는 대부분의 data type은 ToString이라는 method를 지원한다.이는 data를 string으로 변환하는 method인데 정확히 말하자면 string을 allocation(새로 할당)하여 해당 string에 data의 type,값 자체를 쓴다.우리가 주목해야 할 부분은 string을 새로 만드는데에 있다.대부분 코드에서 ToString을 남발하는데 매 frame마다 호출되는 Update method에서 ToString을 남발했다가는심각한 frame drop이 발생할 것 이므로 사용을 자제해야 한다. string +연산자 사용 문자열과 문자열을 합쳐주는 ' + ' 연산자는 사용시 비용이 발생한다...
Mono / Nuget / .NET Framework / .NET Core / Xamarin / Manifest Mono .Net Framework의 OpenSource 개발 Platform으로서 Cross - Platform Application 개발을 지원하며C#과 CLI에 기반을 두고있음(개발자들이 쉽게 Cross Platform Application을 만들 수 있도록 고안된 Software Platform) Nuget .NET을 포함한 Microsoft개발 환경 Platform을 위한 Package ManagerOpen source 기반의 library들을 solution에서 쉽게 가져와 쓸 수 있도록 해주는 도구 .NET Framework Computer의 스펙에 관계없이 VS로 작성한 프로그램이 잘 돌아가도록 하게 해주는것(32bit, 64bit 컴퓨터 관계 없이 잘 작동되게 해주도록, 통일된 규정에 때..