'+'不允许连接字符串或方法组

时间:2012-12-26 19:42:29

标签: c# .net

  

可能重复:
  What is a method group in C#?

连接字符串的'+'信号有什么问题?

这是我的问题的打印屏幕:

http://pbrd.co/UtDf61

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

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

我收到的错误是

  

操作'+'不能应用于'string'类型的操作数   '方法组'

3 个答案:

答案 0 :(得分:6)

由于错误清楚地告诉你,Json既不是字符串也不是对象。

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

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

Json()方法返回一个JsonResult实例,该实例只能用于将JSON写入响应主体;它在这里毫无用处。

答案 1 :(得分: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表示两者方法。这种表达被归类为“方法组”。 重载解析的过程从方法组中选择一种唯一的最佳方法。

答案 2 :(得分:-6)

这是一个function。不是string。你不能在连接中使用它。