일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
- UniRx
- Zenject
- 최적화
- Strategy Pattern
- equals
- 디자인 패턴
- addressable
- 포스트 프로세싱
- 스프라이트 아틀라스
- ReferenceEquals
- Abstract Factory Pattern
- 플러그인
- ==
- 인앱 결제
- Android Plugin
- ScriptableObject
- Reflection
- c#
- Post Processing
- design pattern
- Boxing
- Unity
- sprite atlas
- 게임 개발
- 1인 개발
- Unboxing
- Addressable System
- Today
- Total
목록C# (5)
One_KWS

Equality C#에는 두 가지 같음(Equality 또는 Identity)가 존재한다. Reference Equality 두 개의 객체가 동일한 인스턴스를 참조하는지 여부를 비교한다. 즉, 두 개의 참조 변수가 같은 객체를 가리키는지를 확인한다. Value Equality 두 개의 객체가 내부적으로 같은 값을 가지는지 여부를 비교한다. ==, Equals(), ReferenceEquals() 두 객체의 같음을 확인하기 위해서 아래 세 가지 방법을 사용할 수 있다. == == 연산자는 두 개의 객체의 참조를 비교하여 같은지 판단한다. == 연산자를 재정의하지 않은 경우에는 참조가 같은지 판단한다. (Value Type 비교에 사용할 경우 값을 비교한다.) ReferenceEquals() Refe..

박싱(Boxing) 값 타입(Value Type)을 참조 타입(Reference Type)으로 변환하는 것을 박싱이라고 한다. 값 타입은 스택에 저장되고 참조 타입은 힙에 저장이 된다. 박싱된 값은 힙 메모리에 저장되며, 이 때문에 메모리 오버헤드가 발생한다. int i = 123; // Boxing copies the value of i into object o. object o = i; 언박싱(Unboxing) 참조 타입을 값 타입으로 변환하는 것을 언박싱이라고 한다. 박싱된 값은 힙 메모리에서 스택 메모리로 복사된다. 이 때 복사가 발생하므로 성능에 영향을 줄 수 있다. int i = 123; // a value type object o = i; // boxing int j = (int)o; // ..

CLR (Common Language Runtime) CLR은 NET Framework에서 실행되는 어플리케이션의 실행 환경을 제공하고 다양한 언어로 작성된 코드를 관리하고 실행할 수 있도록 한다. .NET 언어로 작성된 코드를 실행하기 위해 IL(Intermediate Language)로 컴파일하고 JIT(just-in-time) 컴파일러를 사용하여 IL을 기계어로 변환한다. CLR에는 여러가지 기능들이 있다. 메모리 관리: 객체의 메모리 할당과 해제를 자동으로 처리하기 때문에 개발자가 수동으로 메모리 관리를 하지 않아도 된다. 코드 실행: .NET 언어로 작성된 코드를 IL로 컴파일하여 실행 가능한 형태로 만든다. IL은 JIT 컴파일러에 의해 실행 코드로 변환된다. 예외 처리: 코드에서 발생하는 예..

C#에서 다루는 Type에는 Value Type과 Reference Type으로 두 가지가 있으며 둘 중 하나로 반드시 분류된다. 구조체는 Value Type이고 클래스는 Reference Type이다. int, long, decimal, char, byte 등이 Value Type이고 object, string은 Reference Type이다. Value Type과 Reference Type 이 두가지 Type이 프로그래밍에 어떤 영향을 주는지 다음 코드를 보면 알 수 있다. struct MyPoint { public int X { get; set; } public int Y { get; set; } public MyPoint(int x, int y) { this.X = x; this.Y = y; } ..

Reflection 리플렉션은 객체의 Type 정보를 들여다보는 기능이다. Reflection을 이용하면 런타임중 객체의 Type, 이름부터 프로퍼티, 메소드, 이벤트, 필드 목록까지 모두 확인할 수 있다. 또한 동적으로 인스턴스를 생성할 수도 있고 메소드를 호출할 수도 있다. 새로운 데이터 형식을 동적으로 생성하는 것도 가능하다. C#의 모든 데이터는 Object를 상속받고 있다. 즉, 모든 데이터 형식은 Object 형식이 갖고 있는 다음의 메소드를 물려받아 갖고 있다. Equals() GetHashCode() GetType() ReferenceEquals() ToString() 위의 다섯 개 메소드 중에 GetType() 메소는 객체의 Type 정보를 반환하는 기능을 한다. 모든 데이터 형식이 Ge..