c#动态行为?

Roy*_*mir 2 c# clr dynamic-language-runtime dynamic .net-4.0

我有这个代码:

static dynamic Mean (dynamic x, dynamic y)
{
  return (x + y) / 2;
}


static void Main()
{
  int x = 3, y = 5;
  Console.WriteLine (Mean (x, y)); //this is working
}
Run Code Online (Sandbox Code Playgroud)

但是以下行在运行时崩溃:

string s = Mean (3, 5); // Runtime error!
Run Code Online (Sandbox Code Playgroud)

这是为什么 ?

为什么s不能设置动态值

如果是这样,为什么Console.WriteLine (...) 没有成功,与此运行动态值

编辑

如果是的话,我该如何string s = Mean (3, 5);工作?

Chu*_*ris 5

因为在这种情况下,您尝试将int值设置为字符串变量.

Console.WriteLine.ToString()在控制台中写入之前自动执行.试试这个例子.

int x=5;
Console.WriteLine(x);
Run Code Online (Sandbox Code Playgroud)