다음을 통해 공유


partial 형식 및 partial 멤버 선언과 관련된 오류 및 경고

partial 형식 및 partial 멤버 선언과 관련된 오류에는 여러 가지가 있습니다.

  • CS0260: 형식의 선언에 partial 한정자가 없습니다. 형식이 같은 다른 partial 선언이 이미 있습니다.
  • CS0261: type의 partial 선언은 모두 클래스, 구조체 또는 인터페이스여야 합니다.
  • CS0262: type의 partial 선언에 충돌하는 접근성 한정자가 포함되어 있습니다.
  • CS0263: type의 partial 선언에는 서로 다른 기본 클래스를 지정할 수 없습니다.
  • CS0264: type의 partial 선언에서는 형식 매개 변수 이름과 그 순서가 같아야 합니다.
  • CS0265: type의 partial 선언에는 'type parameter' 형식 매개 변수의 제약 조건에 일관성이 없습니다.
  • CS0267: 'partial' 한정자는 'class', 'record', 'struct', 'interface' 또는 메서드 또는 속성 반환 형식 바로 앞에만 올 수 있습니다.
  • CS0282: partial 클래스 또는 구조체 'type'의 여러 선언에서 필드 간 순서가 정의되어 있지 않습니다. 순서를 지정하려면 모든 인스턴스 필드가 같은 선언에 있어야 합니다.
  • CS0501: 'member function'은 abstract, extern 또는 partial로 표시되어 있지 않으므로 본문을 선언해야 합니다.
  • CS0750: partial 멤버는 'abstract' 한정자를 가질 수 없습니다.
  • CS0751: partial 멤버는 partial class 또는 partial struct에서 선언해야 합니다.
  • CS0754: partial 멤버는 인터페이스 메서드를 명시적으로 구현할 수 없습니다.
  • CS0755: 두 부분 메서드 선언 모두 확장 메서드이거나 확장 메서드가 아니어야 합니다.
  • CS0756: 부분 메서드에는 하나의 정의 선언만 사용할 수 있습니다.
  • CS0757: 부분 메서드에는 하나의 구현 선언만 사용할 수 있습니다.
  • CS0759: 부분 메서드의 구현 선언에 대한 정의 선언이 없습니다.
  • CS0761: method<T>의 부분 메서드 선언에는 형식 매개 변수 제약 조건의 일관성이 없습니다.
  • CS0762: 구현 선언이 없는 부분 메서드이므로 이 메서드로부터 대리자를 만들 수 없습니다.
  • CS0763: 두 부분 메서드 선언 모두 static이거나 static이 아니어야 합니다.
  • CS0764: 두 부분 메서드 선언 모두 unsafe이거나 unsafe가 아니어야 합니다.
  • CS1067: partial 선언에서는 형식 매개 변수 이름 및 variance 한정자와 그 순서가 같아야 합니다.
  • CS8142: 두 partial 멤버 선언 모두 동일한 튜플 요소 이름을 사용해야 합니다.
  • CS8663: 두 partial 멤버 선언은 모두 읽기 전용이거나 읽기 전용이 아니어야 합니다.
  • CS8796: 부분 메서드에는 void가 아닌 반환 형식이 있으므로 접근성 한정자가 있어야 합니다.
  • CS8795: partial 멤버에는 접근성 한정자가 있으므로 구현 부분이 있어야 합니다.
  • CS8797: 부분 메서드에는 'out' 매개 변수가 있으므로 접근성 한정자가 있어야 합니다.
  • CS8798: 부분 메서드에는 'virtual', 'override', 'sealed', 'new' 또는 'extern' 한정자가 있으므로 접근성 한정자가 있어야 합니다.
  • CS8799: 두 partial 멤버 선언 모두 동일한 접근성 한정자가 있어야 합니다.
  • CS8800: 두 partial 멤버 선언 모두 virtual, override, sealednew 한정자의 동일한 조합이 있어야 합니다.
  • CS8817: 두 부분 메서드 선언 모두 동일한 반환 형식을 가져야 합니다.
  • CS8818: partial 멤버 선언에는 일치하는 ref 반환 값이 있어야 합니다.
  • CS8863: 단일 부분 형식 선언만 매개 변수 목록을 가질 수 있습니다.
  • CS8988: 매개 변수의 scoped 한정자가 부분 정의와 일치하지 않습니다.
  • CS9248: Partial 속성에는 구현 부분이 있어야 합니다.
  • CS9249: Partial 속성에는 정의 부분이 있어야 합니다.
  • CS9250: Partial 속성에는 하나의 정의 선언만 사용할 수 있으며 자동 속성이 될 수 없습니다.
  • CS9251: Partial 속성에는 하나의 구현 선언만 사용할 수 있습니다.
  • CS9252: 속성 접근자는 정의 부분에 선언되어 있으므로 구현해야 합니다.
  • CS9253: 속성 접근자가 정의 부분에 선언된 접근자를 구현하지 않습니다.
  • CS9254: 속성 접근자가 정의 부분과 일치해야 합니다.
  • CS9255: 두 partial 속성 선언은 모두 동일한 형식이어야 합니다.
  • CS9256: Partial 속성 선언에 서명 차이가 있습니다.
  • CS9257: 두 partial 속성 선언은 모두 필요하거나 둘 다 필요하지 않을 수 있습니다.

다음 섹션에서는 이러한 오류 및 경고의 원인과 수정을 설명합니다.

부분 형식(Partial Type)

  • CS0260: 형식의 선언에 partial 한정자가 없습니다. 형식이 같은 다른 partial 선언이 이미 있습니다.
  • CS0261: type의 partial 선언은 모두 클래스, 구조체 또는 인터페이스여야 합니다.
  • CS0262: type의 partial 선언에 충돌하는 접근성 한정자가 포함되어 있습니다.
  • CS0263: type의 partial 선언에는 서로 다른 기본 클래스를 지정할 수 없습니다.
  • CS0264: type의 partial 선언에서는 형식 매개 변수 이름과 그 순서가 같아야 합니다.
  • CS0265: type의 partial 선언에는 'type parameter' 형식 매개 변수의 제약 조건에 일관성이 없습니다.
  • CS0267: 'partial' 한정자는 'class', 'record', 'struct', 'interface' 또는 메서드 또는 속성 반환 형식 바로 앞에만 올 수 있습니다.
  • CS8863: 단일 부분 형식 선언만 매개 변수 목록을 가질 수 있습니다.

부분 형식(Partial Type) 선언으로 인해 컴파일러가 다음 경고를 내보낼 수 있습니다.

  • CS0282: partial class 또는 struct 'type'의 여러 선언에서 필드 간 순서가 정의되어 있지 않습니다. 순서를 지정하려면 모든 인스턴스 필드가 같은 선언에 있어야 합니다.

부분 형식(Partial Type)의 경우 partial 키워드는 class, record, struct 또는 interface의 바로 앞에 와야 합니다. 컴파일러는 다른 순서로 표시되는 경우 오류를 내보냅니다. 추가:

  • 부분 형식(Partial Type)의 모든 선언은 형식(class, struct, record class, record struct, readonly struct 또는 readonly record struct)의 측면에서 일치해야 합니다.
  • 모든 선언은 partial 한정자를 포함해야 합니다.
  • 제네릭 부분 형식(Partial Type)에 대한 선언에는 동일한 형식 매개 변수가 동일한 순서로 포함되어야 합니다.

선언의 일부 부분은 형식에 대한 모든 선언에서 반복될 필요가 없습니다. 그러나 이러한 요소가 여러 partial 선언에서 반복되는 경우 다음과 일치해야 합니다.

  • 모든 액세스 한정자(예: public).
  • 기본 클래스 또는 구현된 인터페이스.
  • 형식 매개 변수에 대한 제약 조건.

부분 형식(Partial Type)에 대한 최대 하나의 선언에서 기본 생성자를 선언할 수 있습니다.

여러 필드가 partial struct 형식에 대해 여러 파일에 선언되어 있으면 컴파일러에서 경고합니다. 레이아웃 순서가 중요한 경우 동일한 파일의 모든 필드를 선언해야 합니다. 순서가 중요하지 않은 경우 LayoutKind.Auto 값과 함께 System.Runtime.InteropServices.StructLayoutAttribute을(를) 사용할 수 있습니다.

Partial 멤버

  • CS0750: partial 멤버는 'abstract' 한정자를 가질 수 없습니다.
  • CS0751: partial 멤버는 partial class 또는 partial struct에서 선언해야 합니다.
  • CS0754: partial 멤버는 인터페이스 메서드를 명시적으로 구현할 수 없습니다.
  • CS0763: 두 부분 메서드 선언 모두 static이거나 static이 아니어야 합니다.
  • CS0764: 두 부분 메서드 선언 모두 unsafe이거나 unsafe가 아니어야 합니다.
  • CS8142: 두 partial 멤버 선언 모두 동일한 튜플 요소 이름을 사용해야 합니다.
  • CS8663: 두 partial 멤버 선언은 모두 읽기 전용이거나 읽기 전용이 아니어야 합니다.
  • CS8799: 두 partial 멤버 선언 모두 동일한 접근성 한정자가 있어야 합니다.
  • CS8800: 두 partial 멤버 선언 모두 virtual, override, sealednew 한정자의 동일한 조합이 있어야 합니다.
  • CS8818: partial 멤버 선언에는 일치하는 ref 반환 값이 있어야 합니다.
  • CS8988: 매개 변수의 scoped 한정자가 부분 정의와 일치하지 않습니다.

Partial 멤버에는 두 개의 선언이 있습니다. 구현이 없는 선언은 선언적 선언입니다. 구현이 포함된 선언은 구현 선언입니다. Partial 멤버는 partial 형식에서만 허용됩니다. Partial 멤버는 abstract일 수 없습니다. Partial 멤버는 인터페이스를 명시적으로 구현할 수 없습니다. Partial 멤버의 두 선언에는 동일한 서명이 있어야 합니다. 예를 들어 두 선언 모두 static 또는 unsafe 한정자를 포함하거나 두 선언 모두 포함할 수 없습니다.

부분 메서드

  • CS0501: 'member function'은 abstract, extern 또는 partial로 표시되어 있지 않으므로 본문을 선언해야 합니다.
  • CS0755: 두 부분 메서드 선언 모두 확장 메서드이거나 확장 메서드가 아니어야 합니다.
  • CS0756: 부분 메서드에는 하나의 정의 선언만 사용할 수 있습니다.
  • CS0757: 부분 메서드에는 하나의 구현 선언만 사용할 수 있습니다.
  • CS0759: 부분 메서드의 구현 선언에 대한 정의 선언이 없습니다.
  • CS0761: method<T>의 부분 메서드 선언에는 형식 매개 변수 제약 조건의 일관성이 없습니다.
  • CS0762: 구현 선언이 없는 부분 메서드이므로 이 메서드로부터 대리자를 만들 수 없습니다.
  • CS1067: partial 선언에서는 형식 매개 변수 이름 및 variance 한정자와 그 순서가 같아야 합니다.
  • CS8796: 부분 메서드에는 void가 아닌 반환 형식이 있으므로 접근성 한정자가 있어야 합니다.
  • CS8795: partial 멤버에는 접근성 한정자가 있으므로 구현 부분이 있어야 합니다.
  • CS8797: 부분 메서드에는 'out' 매개 변수가 있으므로 접근성 한정자가 있어야 합니다.
  • CS8798: 부분 메서드에는 'virtual', 'override', 'sealed', 'new' 또는 'extern' 한정자가 있으므로 접근성 한정자가 있어야 합니다.
  • CS8817: 두 부분 메서드 선언 모두 동일한 반환 형식을 가져야 합니다.

특정 partial 메서드 선언에는 구현 선언이 필요하지 않습니다. 즉, 멤버가 void를 반환하고 액세스 한정자(기본 private 한정자 포함)를 선언하지 않으며, virtual, override, sealed 또는 new 한정자를 포함하지 않는 경우입니다. 그렇지 않으면 부분 메서드에는 선언 및 구현 선언이 모두 포함되어야 합니다.

부분 메서드에 구현 선언이 포함된 경우 두 선언이 모두 동일해야 합니다. 정확히 하나의 구현 선언을 정의할 수 있습니다.

Partial 속성

다음 오류는 partial 속성 또는 인덱서 선언의 실수를 나타냅니다.

  • CS9248: Partial 속성에는 구현 부분이 있어야 합니다.
  • CS9249: Partial 속성에는 정의 부분이 있어야 합니다.
  • CS9250: Partial 속성에는 하나의 정의 선언만 사용할 수 있으며 자동 속성이 될 수 없습니다.
  • CS9251: Partial 속성에는 하나의 구현 선언만 사용할 수 있습니다.
  • CS9252: 속성 접근자는 정의 부분에 선언되어 있으므로 구현해야 합니다.
  • CS9253: 속성 접근자가 정의 부분에 선언된 접근자를 구현하지 않습니다.
  • CS9254: 속성 접근자가 정의 부분과 일치해야 합니다.
  • CS9255: 두 partial 속성 선언은 모두 동일한 형식이어야 합니다.
  • CS9257: 두 partial 속성 선언은 모두 필요하거나 둘 다 필요하지 않을 수 있습니다.

다음 경고는 partial 속성에서 선언 및 구현 선언의 서명 차이를 나타냅니다.

  • CS9256: Partial 속성 선언에 서명 차이가 있습니다.

부분 속성 또는 인덱서에는 선언적 선언구현 선언이 모두 있어야 합니다. 두 선언의 서명이 일치해야 합니다. 선언 선언자동으로 구현된 속성과 동일한 구문을 사용하므로 구현 선언은 자동으로 구현되는 속성이 될 수 없습니다. 접근자에 본문이 있어야 합니다.