返回值未显示

时间:2017-10-09 06:28:22

标签: c# delegates func

我希望输出显示为“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);
        }
    }
}

3 个答案:

答案 0 :(得分:4)

尝试

Console.WriteLine(ten()):

您正在打印Func对象的字符串表示形式。 但是你必须使用()

来调用它

答案 1 :(得分:3)

当您将方法声明为Func时,您正在封装该方法,当您调用ten时,它尚未被调用。

要执行它,您必须使用.Invoke()

Console.WriteLine(ten.Invoke());

或使用委托实例

Console.WriteLine(ten());

https://dotnetfiddle.net/d2mPPz

答案 2 :(得分:2)

Ten是一个Func,所以如果你想看到&#34; 10&#34;,你需要像 ten.Invoke()

那样调用它。