English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
C#에서는 partial 키워드를 사용하여 여러 .cs 파일에 걸쳐 있는 클래스, 구조, 메서드, 인터페이스의 구현을 분할할 수 있습니다. 컴파일 프로그램을 할 때, 컴파일러는 여러 .cs 파일에서 오는 모든 구현을 결합합니다.
아래는 Employee 클래스를 포함한 employeeprops.cs 파일과 employeemethods.cs 파일을 보여줍니다.
public partial class Employee { public int EmpId { get; set; } public string FirstName { get; set; } public string LastName { get; set; } public int Age { get; set; } }
public partial class MyPartialClass { public Employee(int Id, string name) { this.EmpId = Id; this.Name = name; } public void DisplayEmployeeInfo() { Console.WriteLine(this.EmpId + " " this.FirstName + " " + this.LastName); } public void Save(int id, string firstName, string lastName) { Console.WriteLine("Saved!"); } }
위에서, EmployeeProps.cs 파일은 Employee 클래스의 속성을 포함하고, employeememethods.cs 파일은 Employee 클래스의 모든 메서드를 포함합니다. 이 클래스들은 Employee 클래스로 컴파일됩니다.
public class Employee { public int EmpId { get; set; } public string FirstName { get; set; } public string LastName { get; set; } public int Age { get; set; } public Employee(int Id, string name) { this.EmpId = Id; this.Name = name; } public void DisplayEmployeeInfo() { Console.WriteLine(this.EmpId + " " this.FirstName + " " + this.LastName); } public void Save(int id, string firstName, string lastName) { Console.WriteLine("Saved!"); } }
모든 부분 클래스 정의는 동일한 프로그램 집합과 이름 공간에 위치해야 합니다.
모든 부분은 동일한 접근성을 가지아야 합니다. 예를 들어 공개적이거나 사적인 등.
부분 중 하나가 추상적이거나 기본적인 타입으로 선언되면 전체 클래스 선언은 동일한 타입으로 선언됩니다.
다른 부분은 다른 기본 타입을 가질 수 있으므로 최종 클래스는 모든 기본 타입을 상속합니다.
Partial修饰符는 class, struct 또는 interface 키워드 앞에만 사용할 수 있습니다.
부분 타입의 내장이 가능합니다.
부분 클래스나 구조는 메서드를 포함할 수 있으며, 이 메서드는 부분 클래스나 구조의 두 개의 별도의 .cs 파일로 분할될 수 있습니다. 두 개의 .cs 파일 중 하나는 메서드의 서명을 포함해야 하며, 다른 파일은 선택적으로 부분 메서드의 구현을 포함할 수 있습니다. 메서드의 선언과 구현은 모두 partial 키워드를 가지아야 합니다.
public partial class Employee { public int EmpId { get; set; } public string FirstName { get; set; } public string LastName { get; set; } public int Age { get; set; } partial void GenerateEmployeeId(); }
public partial class MyPartialClass { partial void GenerateEmployeeId() { this.EmpId = random(); } }
위에, employeeprops.cs 파일은 DisplayEmployeeInfo 메서드의 서명을 포함하고, employeemethods.cs 파일은 그 구현을 포함합니다. 컴파일러는 컴파일 중에 모든 부분을 하나로 합칩니다.
부분 메서드의 서명을 포함해야 하지만 구현은 필요하지 않습니다. 이 메서드가 호출되었지만 구현되지 않았다면 컴파일 시나 실행 시 오류가 발생하지 않습니다.
부분 메서드는 partial 키워드를 사용해야 하며 void를 반환해야 합니다.
부분 메서드는 in 또는 ref를 가진 out 매개변수가 없을 수 있습니다.
부분 메서드는 익명私有 메서드이므로 가상 메서드가 될 수 없습니다.
부분 메서드는 정적 메서드일 수 있습니다.
부분 메서드는 일반적으로 일반 메서드입니다.