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

最佳答案

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

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

Console.WriteLine(ten.Invoke());

或使用委托实例

Console.WriteLine(ten());

https://dotnetfiddle.net/d2mPPz

10-08 18:18