次の方法で共有


partial 型と partial メンバー宣言に関連するエラーと警告

partial型とpartialメンバー宣言に関連する次のエラーが発生する可能性があります。

  • CS0260: partial 修飾子が type 宣言にありません。この型の別の部分宣言が存在します。
  • CS0261: 型の部分宣言は、すべて、クラス、構造体、またはインターフェイスのいずれかに統一する必要があります
  • CS0262: 型の部分宣言に競合するアクセシビリティ修飾子が含まれています
  • CS0263: 型の部分宣言に異なる基底クラスが指定されていません
  • CS0264: 型の部分宣言には、同じ順序で、同じ type パラメータ名を指定する必要があります。
  • CS0265: 型の部分宣言に、型パラメータ「type parameter」に対して矛盾する制約が含まれています
  • CS0267: 'partial' 修飾子は、'class'、'record'、'struct'、'interface'、あるいはメソッドまたはプロパティの戻り値の型の直前にのみ使用できます。
  • CS0282: 部分クラスまたは構造体「type」の複数の宣言内のフィールド間の順序は定義されていません。順序を指定するには、すべてのインスタンス フィールドが同じ宣言に含まれている必要があります。
  • CS0501: 「member function」は、abstractextern または partial とマークされていないため本文を宣言する必要があります。
  • CS0750: partial メンバーに、「abstract」修飾子を指定できません。
  • CS0751: partial メンバーは、class partial または partialstruct で宣言する必要があります。
  • CS0754: partial メンバー は、interface メソッドで明示的に実装できない場合があります。
  • CS0755: partial メソッド宣言は両方とも、extension メソッドにするか、両方とも extension メソッドにしないようにします。
  • CS0756: partial メソッドには、複数定義宣言を指定できません。
  • CS0757: partial メソッドには、複数実装宣言を指定できません。
  • CS0759: partial メソッドの実装宣言に対して定義宣言が見つかりませんでした。
  • CS0761: method<T> の partial メソッド宣言に、一貫性のない型パラメータ制約があります。
  • CS0762: delegate from メソッドは、実装宣言が無い partial メソッドであるため、delegate from メソッドを作成できません
  • CS0763: partial メソッド宣言の両方とも static にするか、両方とも static にしないようにします。
  • CS0764: partial メソッド宣言の両方とも unsafe にするか、両方とも unsafe にしないようにします。
  • CS1067: 部分宣言には、同じ順序で、同じ type パラメータ名と variance 修飾子を指定する必要があります。
  • CS8142: partial メンバー宣言の両方には、同じタプル要素名を使用する必要があります。
  • CS8663: partial メンバー宣言の両方を読み取り専用にするか、両方を読み取り専用にすることはできません
  • CS8796: partial メソッドには、非 void 型 return type があるため、accessibility 修飾子にする必要があります。
  • CS8795: partial メンバー には、accessibility 修飾子があるため、実装部分が必要です。
  • CS8797: partial メソッドには、「out」パラメータがあるため、accessibility 修飾子が必要です。
  • CS8798: partial メソッドには、「virtual」、「override」、「sealed」、「new」、「extern」修飾子があるため accessibility 修飾子が必要です。
  • CS8799: 両方の partial メンバー宣言には、同じ accessibility 修飾子が必要です。
  • CS8800: 両方の partial メンバー宣言には、virtualoverridesealednew 修飾子の同じ組み合わせが必要です。
  • CS8817: 両方の partial メソッド宣言には、同じ return type が必要です。
  • CS8818: partial メンバー宣言には、一致する ref 戻り値が必要です。
  • CS8863: 単一の partial 型宣言のみがパラメータ リストを持つことができます
  • CS8988: パラメータの scoped 修飾子には、一致する部分定義がありません。
  • CS9248: partial プロパティには実装部分が必要です。
  • CS9249: partial プロパティには定義部分が必要です。
  • CS9250: partial プロパティには、複数定義宣言が無い場合があり、自動プロパティにできません。
  • CS9251: partial プロパティには、複数実装宣言を指定できない場合があります。
  • CS9252: property アクセサーは定義部分で宣言されているため、実装する必要があります
  • CS9253: property アクセサーは、定義部分で宣言されたアクセサーを実装しません
  • CS9254: property アクセサーが定義部分と一致する必要があります
  • CS9255: 両方の partial プロパティ宣言は同じ型である必要があります。
  • CS9256: partial プロパティ宣言には署名の違いがあります。
  • CS9257: partial プロパティ宣言を両方とも必須にする必要があります。また、両方とも必須でない場合もあります。
  • CS9275: 部分メンバーには実装部分が必要です。
  • CS9276: 部分メンバーには定義部分が必要です。
  • CS9277: 部分メンバーに複数の定義宣言がない場合があります。
  • CS9278: 部分メンバーに複数の実装宣言がない場合があります。
  • CS9279: 部分イベントに初期化子を含めることはできません。
  • CS9280: 初期化子を持つことは、部分コンストラクターの実装宣言のみです。

次のセクションでは、これらのエラーと警告の原因と修正について説明します。

部分型

  • CS0260: 型の宣言に部分修飾子がありません。この型の別の部分宣言が存在します
  • CS0261: 型の部分宣言は、すべてのクラス、すべての構造体、またはすべてのインターフェイスである必要があります
  • CS0262: 型の部分宣言に、アクセシビリティ修飾子が競合しています
  • CS0263: 型の部分宣言で異なる基底クラスを指定することはできません
  • CS0264: 型の部分宣言は、同じ順序で同じ型パラメーター名を持つ必要があります
  • CS0265: 型の部分宣言に、型パラメーター 'type parameter' の制約が一貫性がありません
  • CS0267: 'partial' 修飾子は、'class'、'record'、'struct'、'interface'、またはメソッドまたはプロパティの戻り値の型の直前にのみ表示できます。
  • CS8863: パラメーター リストを持つことのできるのは、1 つの部分型宣言だけです

partial 型宣言により、コンパイラは次の警告を出力する可能性があります。

  • CS0282: 部分 class または struct 'type' の複数の宣言内のフィールド間に定義された順序はありません。順序を指定するには、すべてのインスタンス フィールドが同じ宣言に含まれている必要があります。

これらのエラーは、 部分型宣言が部分型の 規則に違反した場合に発生します。

  • 型のすべての宣言に partial 修飾子を追加します。複数の宣言に型を分割すると、すべての部分にキーワード (CS0260) を含める必要があるためです。
  • 同じ型の異なる部分に classstructrecordinterface を混在させることはできません (CS0261) ため、すべての宣言で同じ型キーワードが使用されていることを確認します。 異なる宣言でアクセシビリティが競合すると、型の意図した可視性 (public) に関するあいまいさが生じるため、すべての宣言で一貫したアクセス修飾子 (すべてのパーツをinternalまたはすべての部分をするなど) を確保する必要があります。
  • 型は 1 つの基底クラスからしか継承できないため、複数の異なる基底クラスが競合するため、すべての宣言で同じ基底クラスが指定されていることを確認します (CS0263)。
  • ジェネリック部分型の場合は、型パラメーター名がすべての部分で完全に一致する必要があるため、すべての宣言で同じ型パラメーターが同じ順序で一覧表示されるようにします (CS0264)。
  • 型パラメーターに対する制約が、一貫性のない制約によって型パラメーターに使用できる型 (CS0265) に関するあいまいさが生じるので、すべての宣言で一貫性が保たれるかどうかを確認します。
  • 言語構文にはこの特定の順序 (partial) が必要であるため、class キーワードを type キーワード (recordstructinterface、または) の直前に配置します。
  • 複数のプライマリ コンストラクターが、使用するコンストラクター パラメーターと初期化ロジック (CS8863) で競合するため、1 つの部分宣言でのみプライマリ コンストラクターを宣言します。

部分構造体型に対して複数のファイルのフィールドを宣言する場合、メモリ レイアウトの順序が重要な場合は、フィールドが複数のファイルに分割されるときに特定の順序を保証できないため、すべてのフィールド宣言を 1 つのファイルに統合する必要があります (CS0282)。 または、レイアウトの順序が重要ではない場合は、System.Runtime.InteropServices.StructLayoutAttribute値を持つLayoutKind.Autoを適用して、ランタイムがレイアウトを自動的に最適化できるようにすることもできます。

partial メンバー

  • CS0750: partial メンバーには、「abstract」修飾子を指定できません。
  • CS0751: partial メンバーは、class partial または partialstruct で宣言する必要があります。
  • CS0754: partial メンバーは、interface メソッドで明示的に実装できない場合があります。
  • CS0763: partial メンバー宣言の両方を static にするか、両方とも static にしないようにします。
  • CS0764: partial メソッド宣言を両方とも unsafe にするか unsafe にしないようにする必要があります。
  • CS8142: partial メンバー宣言の両方には、同じタプル要素名を使用する必要があります。
  • CS8663: partial メンバー宣言の両方を読み取り専用にするか、両方を読み取り専用にすることはできません
  • CS8799: 両方の partial メンバー宣言には、同じ accessibility 修飾子が必要です。
  • CS8800: 両方の partial メンバー宣言には、virtualoverridesealed およびnew 修飾子の同じ組み合わせが必要です。
  • CS8818: partial メンバー宣言には、一致する ref 戻り値が必要です。
  • CS8988: パラメータの scoped 修飾子に一致する部分定義がありません。
  • CS9275: 部分メンバーには実装部分が必要です。
  • CS9276: 部分メンバーには定義部分が必要です。
  • CS9277: 部分メンバーに複数の定義宣言がない場合があります。
  • CS9278: 部分メンバーに複数の実装宣言がない場合があります。

これらのエラーは、 部分メンバー宣言が部分 メソッド、プロパティ、インデクサー、およびイベントの規則に違反した場合に発生します。

  • 抽象メンバーは実装を提供するために派生クラスを必要とするため、部分メンバーから abstract 修飾子を削除します。 この要件は、実装宣言 (CS0750) で実装が提供される部分メンバー パターンと競合します。
  • 部分メンバーは部分型 (partial) にのみ存在できるため、修飾子を含む型内で部分メンバーを宣言します。
  • 2 部構成の宣言パターンは明示的なインターフェイス実装構文 (CS0754) と互換性がないため、部分メンバーから明示的なインターフェイス実装を削除します。
  • 静的メンバーとインスタンス メンバーを混在するとメンバーの呼び出し方法があいまいになるため、両方の宣言で static 修飾子を一貫して含めるか省略します (CS0763)。
  • 安全でないコンテキストに不整合があると、安全性の問題やコンパイル エラー (unsafe) が発生する可能性があるため、両方の宣言で修飾子を一貫して含めるか省略します。
  • 両方の宣言で同じタプル要素名を使用します。異なる名前を使用すると、コードの使用で使用できる名前が混乱する可能性があるためです (CS8142)。
  • 読み取り専用宣言と非読み取り専用宣言を混在すると、メンバーがインスタンスの状態を変更できるかどうかに関するあいまいさが生じるため、両方の宣言で readonly 修飾子を一貫して含めるか省略します (CS8663)。
  • 両方の宣言で同じアクセシビリティ修飾子 ( publicprivateprotectedinternalなど) を使用します。これは、異なるアクセシビリティ レベルがメンバーの可視性 (CS8799) に関して競合するためです。
  • virtualoverridesealed、およびnew修飾子の同じ組み合わせを両方の宣言に適用します。これらの修飾子は、一貫性が必要な継承とポリモーフィズムの動作を制御するためです (CS8800)。
  • 一貫性のない参照による戻り値の動作によって型セーフの問題が発生するため、両方の宣言で一致する ref 戻り修飾子を使用します (CS8818)。
  • この修飾子は ref パラメーターの有効期間を制御し、メモリの安全性を確保するために一致する必要があるため、 scoped 修飾子を両方の宣言のパラメーターに一貫して適用します (CS8988)。
  • 部分メンバーは両方の部分を完了する必要があるため(CS9275CS9276)、定義宣言を持つすべての部分メンバーに実装宣言を提供します。
  • 複数の宣言によって使用する定義または実装 (CS9277CS9278) に関するあいまいさが生じるため、各部分メンバーに定義宣言と実装宣言が 1 つだけ含まれていることを確認します。

部分メソッド

  • CS0501: 「member function」はabstractexternpartial でマークされていないため、本文を宣言する必要があります。
  • CS0755: 両方の partial メソッド宣言は extension メソッドにするか、両方とも extension メソッドにしないようにします。
  • CS0756: partial メソッドには、複数定義宣言を指定できません。
  • CS0757: partial メソッドには、複数実装宣言を指定できません。
  • CS0759: partial メソッドの実装宣言に対して定義宣言が見つかりませんでした。
  • CS0761: method<T> の partial メソッド宣言に、一貫性のない型パラメータ制約があります。
  • CS0762: delegate from メソッドは、実装宣言が無い partial メソッドであるため、delegate from メソッドを作成できません
  • CS1067: 部分宣言には、同じ順序で、同じ type パラメータ名と variance 修飾子を指定する必要があります。
  • CS8796: partial メソッドには、非 void 型 return type があるため、accessibility 修飾子にする必要があります。
  • CS8795: partial メンバー には、accessibility 修飾子があるため、実装部分が必要です。
  • CS8797: partial メソッドには、「out」パラメータがあるため、accessibility 修飾子が必要です。
  • CS8798: partial メソッドには、「virtual」、「override」、「sealed」、「new」、「extern」修飾子があるため accessibility 修飾子が必要です。
  • CS8817: 両方の partial メソッド宣言には、同じ return type が必要です。

これらのエラーは、 部分メソッド宣言が部分メソッドの 規則に違反した場合に発生します。

  • partial修飾子をメソッド宣言に追加するか、メソッド本体を指定します。実装のないメソッドは、abstractextern、または partial (CS0501) としてマークする必要があるためです。
  • 拡張宣言と非拡張宣言を混在すると互換性のないメソッド シグネチャ (this) が作成されるため、両方の宣言に拡張メソッド構文 (最初のパラメーターの修飾子) が一貫して含まれるか省略されていることを確認します。
  • 重複する定義宣言 (メソッド本体のない宣言) を削除します。各部分メソッドは定義を 1 つだけ持つことができます (CS0756)。
  • 各部分メソッドは実装を 1 つだけ持つことができます (CS0757) ため、重複する実装宣言 (メソッド本体を含む宣言) を削除します。
  • 本体を持つすべての部分メソッドには、本文のない一致するシグネチャ宣言が必要であるため、実装する宣言ごとに対応する定義宣言を追加します (CS0759)。
  • 型パラメーター制約が両方の宣言で一致していることを確認します。制約に一貫性がないため、ジェネリック メソッド (CS0761) に対して有効な型に関するあいまいさが生じます。
  • デリゲートを参照するには具象メソッドの実装が必要であるため、メソッドからデリゲートを作成する前に実装宣言を指定します (CS0762)。
  • ジェネリック部分メソッドの場合、一致しないジェネリック シグネチャでは互換性のないメソッド宣言 (CS1067) が作成されるため、両方の宣言で同じ型パラメーター名と分散修飾子が同じ順序で使用されていることを確認します。
  • メソッドが非public型を返すときに、明示的なアクセシビリティ修飾子 (privateprotectedinternalvoidなど) を追加します。これは、非 void 部分メソッドが他のコードから呼び出し可能なアクセシビリティを定義している必要があるためです (CS8796)。
  • アクセシビリティ修飾子が指定されている場合は、実装宣言を指定します。これは、アクセス可能な部分メソッドが呼び出される実装 (CS8795) を持っている必要があるためです。
  • メソッドに out パラメーターがある場合は、明示的なアクセシビリティ修飾子を追加してください。これは、out パラメーターを持つメソッドが呼び出し可能であるためには定義されたアクセシビリティを持つ必要があるからです (CS8797)。
  • virtualoverridesealednew、またはextern修飾子を使用する場合は、明示的なアクセシビリティ修飾子を追加します。これは、これらの修飾子がメソッドの可視性に影響し、明示的なアクセシビリティ仕様 (CS8798) を必要とするためです。
  • 異なる戻り値の型によって互換性のないメソッド シグネチャが作成されるため、両方の宣言で同じ戻り値の型が指定されていることを確認します (CS8817)。

partial プロパティ

  • CS9248: partial プロパティには実装部分が必要です。
  • CS9249: partial プロパティには定義部分が必要です。
  • CS9250: partial プロパティには、複数定義宣言が無い場合があり、自動プロパティにできません。
  • CS9251: partial プロパティには、複数実装宣言を指定できない場合があります。
  • CS9252: property アクセサーは定義部分で宣言されているため、実装する必要があります
  • CS9253: property アクセサーは、定義部分で宣言されたアクセサーを実装しません
  • CS9254: property アクセサーが定義部分と一致する必要があります
  • CS9255: 両方の partial プロパティ宣言は同じ型である必要があります。
  • CS9257: 両方の partial プロパティ宣言を必須にするか必須にしないかにする必要があります。

部分的なプロパティまたはインデクサーの宣言により、コンパイラは次の警告を出力する可能性があります。

  • CS9256: partial プロパティ宣言には署名の違いがあります。

これらのエラーと警告は、 部分プロパティまたはインデクサー宣言が部分プロパティ の規則に違反した場合に発生します。

  • 部分プロパティでは両方の部分を完了する必要があるため、宣言を定義する部分プロパティごとに実装宣言を指定します (CS9248)。
  • すべての実装に対応する定義 (CS9249) が必要であるため、宣言を実装する部分プロパティごとに定義宣言を指定します。
  • 重複する定義宣言を削除し、実装宣言で自動プロパティ構文を使用しないようにします。各部分プロパティには定義を 1 つだけ指定でき、実装には明示的なアクセサー本体 (CS9250) を含める必要があるためです。
  • 各部分プロパティには実装を 1 つだけ含めることができるため、重複する実装宣言を削除します (CS9251)。
  • 定義宣言で宣言されているすべてのアクセサーを実装します。実装宣言では、定義 (CS9252) で指定されたすべてのアクセサー (get、set、または init) の本体を提供する必要があるためです。
  • 定義部分 (CS9253) で宣言されたアクセサーのみを実装できるため、定義宣言で宣言されていない実装宣言からアクセサーを削除します。
  • 両方の宣言間でアクセサーの型(get、set、または init)と修飾子を含むアクセサーシグネチャが一致していることを確認してください。アクセサー定義に一貫性がないと、互換性のないプロパティ宣言(CS9254)を作成してしまいます。
  • 異なる型によって互換性のないプロパティシグネチャ (CS9255) が作成されるため、両方の宣言で同じプロパティ型が指定されていることを確認します。
  • 必須宣言と必要でない宣言を混在すると、プロパティを初期化する必要があるかどうか (required) があいまいになるため、両方の宣言に修飾子が一貫して含まれるか省略されていることを確認します。
  • アクセシビリティ修飾子、戻り値の型、またはパラメーター リスト (インデクサーの場合) の違いが予期しない動作 (CS9256) を引き起こす可能性があるため、宣言と実装の宣言の間のシグネチャの不一致を確認して修正します。

部分イベントとコンストラクター

  • CS9279: 部分イベントに初期化子を含めることはできません。
  • CS9280: 初期化子を持つことは、部分コンストラクターの実装宣言のみです。

部分コンストラクターの定義宣言または部分イベント宣言で初期化子を宣言しました。 初期化子を削除します。