オーバーロードされたメソッドが呼び出しで使用される C# 仕様のルールを見てきましたが、メソッドが実際にオーバーロードされたメソッドになるために満たす必要がある基準については何も見つからないようです。
これが私のショットです。問題が発生した場合はお知らせください。
これは、アクセス修飾子やジェネリックを考慮していません (私はまだ C# の本を読んでいる初心者です)。
2 つの方法を検討する
- 両方のメソッドに正しい仮パラメータ リストがあることを確認してください
- オプション パラメータを必須パラメータとして扱う
- 型が params 配列の型である 1 つの必須パラメーターのように params を扱います
- 必須パラメーターの 2 つのリストがあります。
- (P1、P2、P3、P4) および (Q1、Q2、Q3、Q4)
- P1 と Q1、P2 と Q2、… はパラメーターのペア
- メソッドをオーバーロードするには、2 つのメソッドの名前は同じである必要がありますが、パラメーター リストは異なります。
これらのいずれかが false でなければなりません
- 同じ数のパラメータ
- 各パラメーター ペアは同じ型である必要があります
- 各パラメーター ペアには、両方にパラメーター修飾子が含まれているか、両方にパラメーター修飾子が含まれていない必要があります。
例: method(ref int a) と method(out int a) はオーバーロードされたメソッドではありません
- 両方 1 パラメータ
- どちらもint型
- どちらにもパラメーター修飾子があります