连接字符串的'+'信号有什么问题?
这是我的问题的打印屏幕:
Json(new
{
dom = "RegistroUsuario",
type = "showErrorToast",
msg = "Erro: " + e,
}, JsonRequestBehavior.AllowGet);
string jsScript = "closeAndRedirectJson(" + Json + ")";
我收到的错误是
操作'+'不能应用于'string'类型的操作数 '方法组'
答案 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
。你不能在连接中使用它。