次のことを考慮してください。
static string X() { return "hello"; }
static void Main()
{
Console.WriteLine(X + "goodbye");
}
問題がわかりますか?このコードは、メソッドXを文字列「goodbye」と連結します。しかし、メソッドは文字列に連結できるものではありません!メソッドを呼び出すことが目的でした。正しいコードは次のとおりです。
Console.WriteLine(X() + "goodbye");
プログラムフラグメントから、そこに何を連結しようとしているのかはわかりませんJson
が、メソッドであり、文字列と連結できるものではありません。
ちなみに、コンパイラがエラーで「メソッドグループ」というやや紛らわしい用語を使用している理由は、次のような状況にある可能性があるためです。
static string X(int y) { return "hello"; }
static string X(double z) { return "hello"; }
static void Main()
{
Console.WriteLine(X + "goodbye");
}
現在、どちらのメソッド X
が参照しているかは不明であり、実際、C#言語では、式が両方のX
メソッドを参照していると言われています。このような式は「メソッドグループ」に分類されます。過負荷解決のプロセスは、メソッドグループから一意の最良のメソッドを選択します。