私は先週これに何度か遭遇しました、そして理由を知りたいです-私はグーグルを持っていました、しかし直接関連するものを見つけることができませんでした。
動的メソッドを持つクラスがあり、同じインターフェイスで静的メソッドを追加できます。
public class MyClass
{
public int MyMethod()
{
//do something #1;
}
public static int MyMethod()
{
//do something
}
}
これは問題ありませんが、動的メソッドから静的メソッドを呼び出して#1をに置き換えようとすると、return MyClass.MyMethod()
「次のメソッドまたはプロパティ間で呼び出しがあいまいです:MyClass.MyMethod()とMyClass.MyMethod()」というエラーが発生します。 .static
メソッドを削除すると、エラーは「オブジェクト参照が必要です..」に変わります。これは理にかなっています。
では、なぜこれがあいまいなのですか?コード内の他の場所から機能する静的メソッドを指定するために、クラス名が前に付けられています。
なぜここにいないのですか?
編集:私は実際に静的メソッドを呼び出す動的メソッドなしでそれをコンパイルしようとしませんでした、私はそれを強調せずにVSを通り過ぎただけでした。
しかし、私が思うに、それでも同様の質問ですが、「一方は静的で、もう一方はそうではないので、なぜ両方が存在できないのですか」が追加されています。