1

重複の可能性:
C#のメソッドグループとは何ですか?

文字列を連結するための「+」信号の問題は何ですか?

これは私の問題の印刷画面です:

http://pbrd.co/UtDf61

Json(new
{
    dom = "RegistroUsuario",
    type = "showErrorToast",
    msg = "Erro: " + e,
}, JsonRequestBehavior.AllowGet);

string jsScript = "closeAndRedirectJson(" + Json + ")";

私が受け取っているエラーは

操作'+'は、タイプ'string'および'methodgroup'のオペランドには適用できません。

4

3 に答える 3

6

エラーが明確に示しているように、Jsonは文字列でもオブジェクトでもありません。

むしろ、それはメソッドグループであり、機能への「参照」です。
Javascriptとは異なり、C#関数はオブジェクトではありません。メソッドグループを使用してデリゲートインスタンスを作成することしかできません。(とにかくあなたが望むものではありません)

JavascriptSerializer以前のオブジェクトを使用可能なJSONの文字列に変換する場合は、クラスを直接使用する必要があります。

このJson()メソッドはJsonResult、JSONを応答本文に書き込むためにのみ使用できるインスタンスを返します。ここでは役に立たない。

于 2012-12-26T19:45:25.133 に答える
3

次のことを考慮してください。

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メソッドを参照していると言われています。このような式は「メソッドグループ」に分類されます。過負荷解決のプロセスは、メソッドグループから一意の最良のメソッドを選択します。

于 2012-12-26T19:47:03.813 に答える
-6

それはfunctionです。ではありませんstring。連結して使用することはできません。

于 2012-12-26T19:44:18.497 に答える