C#表达式Lambda

C#表达式Lambda,c#,visual-studio-2010,lambda,C#,Visual Studio 2010,Lambda,嗨,我正在从一本书中学习如何使用Lambda。在我将书中的一段代码复制到VS2010之后,我得到了错误: 委托'System.Func'不接受1个参数' VS2010在第3行的左括号下标记了错误,在“float x”之前。你能告诉我是什么错误吗 static void Main(string[] args) { Func<float> TheFunction = (float x) => { const float A = -0.0003f;

嗨,我正在从一本书中学习如何使用Lambda。在我将书中的一段代码复制到VS2010之后,我得到了错误:

委托'
System.Func
'不接受1个参数'

VS2010在第3行的左括号下标记了错误,在“float x”之前。你能告诉我是什么错误吗

static void Main(string[] args)
{
    Func<float> TheFunction = (float x) =>
    {
        const float A = -0.0003f;
        const float B = -0.0024f;
        const float C = 0.02f;
        const float D = 0.09f;
        const float E = -0.5f;
        const float F = 0.3f;
        const float G = 3f;
        return (((((A * x + B) * x + C) * x + D) * x + E) * x + F) * x + G;
    };

    Console.Read();
}
static void Main(字符串[]args)
{
函数=(浮点x)=>
{
常数浮点A=-0.0003f;
常数浮点B=-0.0024f;
常数浮点数C=0.02f;
常数浮动D=0.09f;
常数浮点E=-0.5f;
常数浮点F=0.3f;
常数浮点数G=3f;
返回((A*x+B)*x+C)*x+D)*x+E)*x+F)*x+G;
};
Console.Read();
}
因为
Func
代表一个委托,该委托返回类型为
T
的值。来自:

封装一个没有参数的方法,并返回由TResult参数指定的类型的值

public delegate TResult Func<out TResult>()

你想要的是一个
Func
——也就是说,一个代理接受一个
float
作为参数,并返回一个
float

类型的值。你试图编写一个函数,它接受一个
float
输入,并返回一个
float
输出。这就是
Func
。(为了给出一个更清楚的示例,如果您想要一个带有
int
参数和
float
返回类型的委托,那么它将是
Func

Func
将没有参数,返回类型为
float

封装没有参数的方法,并返回由
TResult
参数指定的类型的值

public delegate TResult Func<out TResult>()
public委托TResult Func()

Func中的最后一个参数是返回类型,其他参数是参数类型。对于参数为a、b、c的Func,a和b是参数类型,c是返回类型

Func<int, int, double> func = (a,b) => a + b;
int aInt = 1;
int bInt = 2;
double answer = func(aInt, bInt); // answer = 3
Func Func=(a,b)=>a+b;
int=1;
int bInt=2;
双答案=func(aInt,bInt);//答案=3

因为你看起来有点缺少代表性+1@Garry你投的是答案,不是书。