0

重複の可能性:
C#でのあいまいな呼び出しに関する質問

私には次の2つの方法があります。

TypeA MyMethod(string s) {}
TypeB MyMethod(string s) {}

次の呼び出しでは、「メソッド間のあいまいさ」エラーが発生します。

TypeA ta = MyMethod("some string");

オブジェクトが経由またはその他TypeAではなく明示的に戻るように要求している場合、これはどのように発生しますか?var


TypeATypeBは別々のクラスであり、共通点はありません。

4

2 に答える 2

11

C#仕様v4.0、セクション1.6.6から:

メソッドのシグニチャは、メソッドが宣言されているクラスで一意である必要があります。メソッドのシグニチャは、メソッドの名前、タイプパラメータの数、およびそのパラメータの数、修飾子、およびタイプで構成されます。メソッドのシグニチャには、戻り型は含まれていません。

戻り型のみが異なるため、同じシグニチャを持つ2つのメソッドがあります。これは許可されていません。

于 2012-11-30T18:31:30.657 に答える
1

この方法でメソッドを呼び出している場合、リターン型をオーバーロードすることはできません

TypeA ta = MyMethod("some string");

そうすれば、コンパイラがメソッドを選択することは明らかですが、このように呼び出すとどうなりますか

MyMethod("some string");

メソッドによって返された値を使用していない場合、コンパイラーは呼び出す適切なメソッドを選択できません。これがあいまいな呼び出しである理由です。

于 2012-11-30T18:31:13.307 に答える