정리가 필요한 카테고리(추후 정리)/C#,Unity

C#] 부분 형식, 부분 메서드

TwinParadox 2017. 1. 18. 10:05
728x90

부분 형식(partial type)과 부분 메서드(partial method)



- 부분 형식


하나의 형식을 여러 곳에서 나누어 정의하는 것

하나의 형식이 여러 소스 파일에서 정의되는 경우도 흔함.

부분 클래스의 흔한 용도 하나는 다른 어떤 출처에서 자동으로 생성한 클래스를 사람이 직접 추가해 보강하는 것

한 형식의 모든 부분 선언에는 반드시 partial 키워드가 있어야 함.



AGen.cs - 자동 생성

partial class A { ... }


A.cs - 사람이 직접 생성

partial class a {...}



매개변수가 동일한 생성자가 여러 개의 부분 선언에 포함되어 있는 경우처럼 멤버들이 충돌해선 안 됨.

부분 형식은 전적으로 컴파일러가 처리해,

모든 부분 선언이 갖추어져야 하며, 반드시 어셈블리 안에 있어야 함.


하나 이상의 부분 선언에서 기반 클래스를 지정 가능하나,

그런 부분 선언들은 모두 동일한 기반 클래스를 지정해야 함.


컴파일러는 부분 형식 선언들 사이에서의 필드 초기화 순서에 관해 어떠한 것도 보장하지 않음.




- 부분 메서드 : C# 3.0


부분 형식에 부분 메서드가 존재할 수도 있음.

부분 메서드는 자동으로 생성된 부분 형식의 일부 기능을 사람이 직접 커스텀화하기 위한 확장 지점(hook) 역할


부분 메서드는 정의와 구현이라는 두 부분이 나뉨.

정의는 코드 생성기가 자동 생성하고 구현은 사람이 작성.

구현이 주어지지 않으면, 컴파일러는 부분 메서드의 정의 자체(그 메서드를 호출하는 코드 역시)를 제거함.

이로 인해 코드 자동 생성 기법을 이용할 때,

코드의 크기가 불필요하게 불어나는 문제를 피하고 자유롭게 확장 지점을 제공할 수 있음.

부분 메서드의 반환 형식은 반드시 void이어야 하며, 암묵적으로 private이 적용됨.

728x90

'정리가 필요한 카테고리(추후 정리) > C#,Unity' 카테고리의 다른 글

C#] 제네릭(Generic) - 1  (0) 2017.01.24
C#] 열거형(Enum Type)  (60) 2017.01.23
C#] nameof  (0) 2017.01.17
C#] 상수(Constant)  (0) 2017.01.15
C#] 인덱서(Indexer)  (0) 2017.01.14