我希望输出显示为“10”,但代码输出“System.Func'1[System.Int32]
”
不起作用返回“10”?为什么不显示?
using System;
namespace ConsoleApplication
{
class Program
{
public int Get10()
{
return 10;
}
static void Main(string[] args)
{
var ten=new Func<int>(new Program().Get10);
Console.WriteLine(ten);
}
}
}
答案 0 :(得分:4)
尝试
Console.WriteLine(ten()):
您正在打印Func
对象的字符串表示形式。
但是你必须使用()
答案 1 :(得分:3)
当您将方法声明为Func
时,您正在封装该方法,当您调用ten
时,它尚未被调用。
要执行它,您必须使用.Invoke()
Console.WriteLine(ten.Invoke());
或使用委托实例
Console.WriteLine(ten());
答案 2 :(得分:2)
Ten是一个Func,所以如果你想看到&#34; 10&#34;,你需要像 ten.Invoke()
那样调用它。