반응형 DEV/Unity C#5 [C#] structs and Interface The fact that a struct can implement an interface is well known and so is the fact that casting a value type into an interface leads to boxing of the value type. This is because methods in interfaces are defined as virtual and to resolve virtual references, vtable (method table) look up is required. Since value types do not have pointers to vtable they are first boxed into a reference type and t.. 2019. 6. 1. [C#] 액세스 한정자 (Access Modifiers) 모든 형식과 형식 멤버에는 사용 중인 어셈블리나 기타 어셈블리의 다른 코드에서 사용될 수 있는지 여부를 제어하는 액세스 가능성 수준이 있다. 다음 액세스 한정자를 사용하여 형식 또는 멤버를 선언할 때 해당 항목의 액세스 가능성을 지정할 수 있음. public - 동일한 어셈블리의 다른 코드나 해당 어셈블리를 참조하는 다른 어셈블리의 코드에서 형식이나 멤버에 액세스 private - 같은 클래스 또는 구조체의 코드에서만 형식 또는 멤버에 액세스 protected - 같은 클래스 또는 해당 클래스에서 파생된 클래스의 코드에서만 형식 또는 멤버에 액세스 internal - 동일한 어셈블리의 코드에서는 형식이나 멤버에 액세스할 수 있지만 다른 어셈블리의 코드에서는 액세스 불가능 protected internal.. 2019. 5. 12. [C#] Garbage Collection: Mark and Sweep 용어정의 1. Object: 힙의 저장소 단위. 일반적으로는 OOP의 객체를 의미하지만 절차 언어, 또는 함수 언어에도 동일하게 적용된다. 2. Object / Reference graph: 메모리에서 object들의 방향을 나타내는 그래프. 다음 그림이 예이다. node는 메모리에 있는 object이고 edges(arrows)는 한 object가 다른 object의 참조를 들고 있음을 표현하고 있다. object3 , object5 그리고 object6 에서 순환참조가 발생한다. 3. Roots: reference graph에서 시작점의 집합을 뜻한다. roots는 스택에서의 로컬 변수, 전역 변수가 될 수 있다. 위의 예시에서는 녹색 node가 roots에 속한다. 4. Unreachable obje.. 2019. 5. 11. 인터페이스 IEnumerator 와 IEnumerable의 차이 반복자(iterator)에 대한 C#에서 제공하는 인터페이스 세트 foreach를 사용하기 위한 공통 인터페이스를 제공하는데 IEnumerable 클래스이다. IEnumerable + GetEnumerator GetEnumerator는 IEnumerator를 리턴 값으로 가지게 되는데 이 IEnumerator라는 클래스는 쉽게 말해서 땅바닥에 물건들이 널려있다고 가정할때 물건을 가르키는 손가락 같은 역할을 하게된다. IEnumerator + Current + MoveNext + Reset 3가지의 구현해야하는 공통메소드가 있으며, 현재 시점의 개체와 다음 개체, 그리고 현재의 가리키는 손가락을 처음으로 되돌리는, 3가지 약속된 역할을 하는 메소드가 정의되어 있다. 또한 IEnumator를 리턴값으로 뒀을.. 2019. 5. 9. 이전 1 2 다음 반응형