1

Possible Duplicate:
What is a method group in C#?

What is the problem with the '+' signal to concatenate a string?

This is print screen of my problem:

http://pbrd.co/UtDf61

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

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

The error I am receiving is

Operation '+' cannot be applied to operands of type 'string' and 'method group'

4

3 回答 3

6

正如错误清楚地告诉你的那样,Json它既不是字符串也不是对象。

相反,它是一个方法组——函数的“参考”。
与 Javascript 不同,C# 函数不是对象;您只能使用方法组来创建委托实例。(这不是你想要的)

如果要将之前的对象转换为可用的 JSON 字符串,则需要JavascriptSerializer直接使用该类。

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

It's a function. Not a string. You can't use it with concatenation.

于 2012-12-26T19:44:18.497 回答