次の方法で共有


this パラメーターまたはextension ブロックで宣言された拡張メソッドに関連するエラーと警告

  • CS1100: メソッドには、最初のパラメーターにないパラメーター修飾子 'this' があります
  • CS1101: パラメーター修飾子 'ref' を 'this' と共に使用することはできません。
  • CS1102: パラメーター修飾子 'out' を 'this' と共に使用することはできません。
  • CS1103: 拡張メソッドの最初のパラメーターをポインター型にすることはできません。
  • CS1105: 拡張メソッドは静的である必要があります。
  • CS1106: 拡張メソッドは、非ジェネリック静的クラスで定義する必要があります。
  • CS1109: 拡張メソッドは最上位の静的クラスで定義する必要があります。'name' は入れ子になったクラスです。
  • CS1110: コンパイラで必要な型 ExtensionAttribute が見つからないため、新しい拡張機能を定義できません。System.Core.dllへの参照がありませんか?
  • CS1112: 'ExtensionAttribute' を使用しないでください。代わりに 'this' キーワードを使用してください。
  • CS1113: 値型に定義されている拡張メソッドを使用してデリゲートを作成することはできません。
  • CS1743: 'this' パラメーターの既定値を指定できません。
  • CS9281: 拡張宣言に名前がない可能性があります。
  • CS9282: 拡張宣言には、メソッドまたはプロパティのみを含めることができます。
  • CS9283: 拡張機能は、最上位レベルの非ジェネリック静的クラスで宣言する必要があります。
  • CS9284: 拡張機能の受信側パラメーターに既定値を設定することはできません。
  • CS9285: 拡張コンテナーには、受信者パラメーターを 1 つだけ指定できます。
  • CS9287: 受信側パラメーターは、拡張コンテナーの型パラメーターと同じ名前を持つことはできません。
  • CS9288: パラメーター、ローカル変数、またはローカル関数は、拡張コンテナー型パラメーターと同じ名前を持つことはできません。
  • CS9289: メンバー型パラメーターの名前は、拡張コンテナーの型パラメーターと同じです。
  • CS9290: パラメーター、ローカル変数、またはローカル関数は、拡張パラメーターと同じ名前を持つことはできません。
  • CS9291: 'value': 自動的に生成されたパラメーター名が拡張パラメーター名と競合します。
  • CS9292: 型パラメーターの名前は拡張パラメーターと同じです。
  • CS9293: このコンテキストでは拡張パラメーターを使用できません。
  • CS9294: 'value': 自動的に生成されたパラメーター名が拡張型パラメーター名と競合します。
  • CS9295: 拡張型は、拡張機能によって宣言されたすべての型パラメーターを参照する必要がありますが、型パラメーターは参照されません。
  • CS9300: 拡張ブロックの 'ref' 受信側パラメーターは、値型または構造体に制約されたジェネリック型である必要があります。
  • CS9301: 拡張の 'in' または 'ref readonly' 受信側パラメーターは、具象 (非ジェネリック) 値型である必要があります。
  • CS9302: 拡張ブロックで宣言された新しい保護されたメンバー。
  • CS9303: 名前のない受信側パラメーターを使用して拡張ブロック内のインスタンス メンバーを宣言することはできません。
  • CS9304: 拡張ブロックで init 専用アクセサーを宣言できません。
  • CS9305: 拡張ブロックの名前のない受信側パラメーターで修飾子を使用できません。

拡張機能の宣言に関する一般的なエラー

コンパイラは、選択した構文に関係なく、すべての拡張メンバー宣言に適用される規則に違反すると、これらのエラーを出力します。

  • CS1102: パラメーター修飾子 'out' を 'this' と共に使用することはできません。
  • CS1106: 拡張メソッドは、非ジェネリック静的クラスで定義する必要があります。
  • CS1103: 拡張メソッドの最初のパラメーターをポインター型にすることはできません。
  • CS1109: 拡張メソッドは最上位の静的クラスで定義する必要があります。'name' は入れ子になったクラスです。
  • CS1113: 値型に定義されている拡張メソッドを使用してデリゲートを作成することはできません。
  • CS1743: 'this' パラメーターの既定値を指定できません。
  • CS9283: 拡張機能は、最上位レベルの非ジェネリック静的クラスで宣言する必要があります。
  • CS9284: 拡張機能の受信側パラメーターに既定値を設定することはできません。
  • CS9285: 拡張コンテナーには、受信者パラメーターを 1 つだけ指定できます。

すべての拡張宣言は、次の規則に従う必要があります。

  • その包含型 (class または struct) は、非ジェネリックで staticする必要があります。
  • その包含型は、最上位レベルの型である必要があります。 別の型にネストすることはできません。
  • 値型のインスタンスを拡張するメンバーは、デリゲートに変換できません。
  • 受信側パラメーターには、 out パラメーター修飾子を含めることはできません。
  • 受信側パラメーターに既定の引数値を指定することはできません。
  • ポインター型を拡張することはできません。 つまり、 this 修飾子を適用するパラメーターをポインター型にすることはできません。

これらのエラーは、拡張ブロック (C# 14 機能) に固有です。 拡張ブロックは、静的クラスの extension キーワードを使用して宣言されます。 extensionは、受信側の型と名前を宣言します。 extensionで宣言されたブロック内のすべてのメンバーは、そのレシーバーの拡張メンバーです。

  • CS9281: 拡張宣言に名前がない可能性があります。
  • CS9282: 拡張宣言には、メソッドまたはプロパティのみを含めることができます。
  • CS9287: 受信側パラメーターは、拡張コンテナーの型パラメーターと同じ名前を持つことはできません。
  • CS9288: パラメーター、ローカル変数、またはローカル関数は、拡張コンテナー型パラメーターと同じ名前を持つことはできません。
  • CS9289: メンバー型パラメーターの名前は、拡張コンテナーの型パラメーターと同じです。
  • CS9290: パラメーター、ローカル変数、またはローカル関数は、拡張パラメーターと同じ名前を持つことはできません。
  • CS9291: 'value': 自動的に生成されたパラメーター名が拡張パラメーター名と競合します。
  • CS9292: 型パラメーターの名前は拡張パラメーターと同じです。
  • CS9293: このコンテキストでは拡張パラメーターを使用できません。
  • CS9294: 'value': 自動的に生成されたパラメーター名が拡張型パラメーター名と競合します。
  • CS9295: 拡張型は、拡張機能によって宣言されたすべての型パラメーターを参照する必要がありますが、型パラメーターは参照されません。
  • CS9300: 拡張ブロックの 'ref' 受信側パラメーターは、値型または構造体に制約されたジェネリック型である必要があります。
  • CS9301: 拡張の 'in' または 'ref readonly' 受信側パラメーターは、具象 (非ジェネリック) 値型である必要があります。
  • CS9302: 拡張ブロックで宣言された新しい保護されたメンバー。
  • CS9303: 名前のない受信側パラメーターを使用して拡張ブロック内のインスタンス メンバーを宣言することはできません。
  • CS9304: 拡張ブロックで init 専用アクセサーを宣言できません。
  • CS9305: 拡張ブロックの名前のない受信側パラメーターで修飾子を使用できません。

拡張機能の宣言は、次の規則に従う必要があります。

  • 拡張機能に名前トークンを含めることはできません。 拡張機能は受信側のみを宣言します。
  • 受信側パラメーターに既定値を設定することはできません。

拡張ブロックで宣言された拡張メンバーは、 一般的な規則に加えて、次の規則に従う必要があります。

  • 有効な拡張メンバー型は、メソッドとプロパティのみです。 拡張メンバーは、インスタンスまたは型を拡張できます。
  • インスタンスを拡張するメンバーを含めるために、拡張機能は受信者のパラメーター名を指定する必要があります。
  • 受信側パラメーター名は、その拡張ブロック内で一意である必要があります。
  • すべての拡張メンバーは、拡張機能で宣言されているすべての型パラメーターを使用する必要があります。 さらに型パラメーターを追加できます。

これらのエラーは、メソッドの最初のパラメーターに this 修飾子を追加して受信側を宣言する拡張メソッドに固有です。

  • CS1100: メソッドにパラメーター修飾子 'this' があり、最初のパラメーターにはありません
  • CS1101: パラメーター修飾子 'ref' を 'this' と共に使用することはできません。
  • CS1105: 拡張メソッドは静的である必要があります。
  • CS1110: コンパイラで必要な型 ExtensionAttribute が見つからないため、新しい拡張機能を定義できません。System.Core.dllへの参照がありませんか?
  • CS1112: 'ExtensionAttribute' を使用しないでください。代わりに 'this' キーワードを使用してください。

受信側インスタンスに this 修飾子を含める拡張メソッドは、 一般的な規則に加えて、次の規則に従う必要があります。

  • メソッドには、 static 修飾子が必要です。
  • this パラメーター修飾子は、最初のパラメーターに適用する必要があります。 メソッドの他のパラメーターには適用できません。
  • ref out パラメーター修飾子を最初のパラメーターに適用することはできません。 refを適用するには、拡張ブロックに変換する必要があります。
  • .NET Framework アプリでは、 System.Core.dll を参照として追加する必要があります。
  • 最初のパラメーターに this 修飾子を指定する必要があります。 代わりに ExtensionAttribute 属性を直接使用することはできません。