C# 4.0 无法使用FUNC调用函数 受保护的无效页面加载(对象发送方,事件参数e) { int k=0; Func p5=()=>{return k++;}; } 公共int int生产者() { 返回x++; }
我无法调用函数IntProducer(),语法是否错误?您从未调用过该函数,因为您从未尝试直接或间接调用它 如果要调用它,首先必须将函数存储在变量中,然后像调用任何其他方法一样调用该变量C# 4.0 无法使用FUNC调用函数 受保护的无效页面加载(对象发送方,事件参数e) { int k=0; Func p5=()=>{return k++;}; } 公共int int生产者() { 返回x++; },c#-4.0,C# 4.0,我无法调用函数IntProducer(),语法是否错误?您从未调用过该函数,因为您从未尝试直接或间接调用它 如果要调用它,首先必须将函数存储在变量中,然后像调用任何其他方法一样调用该变量 protected void Page_Load(object sender, EventArgs e) { int k = 0; Func<int> p5 = () => { return k++; }; }
protected void Page_Load(object sender, EventArgs e)
{
int k = 0;
Func<int> p5 = () => { return k++; };
}
public int IntProducer()
{
return x++;
}
受保护的无效页面加载(对象发送方,事件参数e)
{
Func producer=IntProducer;//存储它
int result=producer();//调用它
}
或者,您也可以创建一个lambda函数来调用它
protected void Page_Load(object sender, EventArgs e)
{
Func<int> producer = IntProducer; // store it
int result = producer(); // call it
}
受保护的无效页面加载(对象发送方,事件参数e)
{
Func producer=()=>IntProducer();//存储lambda
int result=producer();//调用它
}
我不确定您实际上想要完成什么,但您不需要使用Func
来调用函数。只需使用以下语法:
protected void Page_Load(object sender, EventArgs e)
{
Func<int> producer = () => IntProducer(); // store the lambda
int result = producer(); // call it
}
如果您发现自己非常了解这一点,并且觉得自己确实需要一个函数
,那么您可以分配它,并像调用普通函数一样调用它:
protected void Page_Load(object sender, EventArgs e)
{
int k = IntProducer();
// Todo: Do more with k here
}
public int IntProducer()
{
return x++;
}
它基本上就像一个未命名的函数。在这种情况下,该函数不带参数。第一个版本很好。第二个版本可以工作,但毫无意义,而且可能更令人困惑。。。
protected void Page_Load(object sender, EventArgs e)
{
Func<int> theFunc = IntProducer;
// Todo: Do some stuff here
int k = theFunc(); // Calls `IntProducer`
// Todo: Do more with k here
}
public int IntProducer()
{
return x++;
}
() => { return k; };