C#表达式Lambda
嗨,我正在从一本书中学习如何使用Lambda。在我将书中的一段代码复制到VS2010之后,我得到了错误: 委托'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;
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你投的是答案,不是书。