Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 4.0 无法使用FUNC调用函数 受保护的无效页面加载(对象发送方,事件参数e) { int k=0; Func p5=()=>{return k++;}; } 公共int int生产者() { 返回x++; }_C# 4.0 - Fatal编程技术网

C# 4.0 无法使用FUNC调用函数 受保护的无效页面加载(对象发送方,事件参数e) { int k=0; Func p5=()=>{return k++;}; } 公共int int生产者() { 返回x++; }

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++; }; }

我无法调用函数IntProducer(),语法是否错误?

您从未调用过该函数,因为您从未尝试直接或间接调用它

如果要调用它,首先必须将函数存储在变量中,然后像调用任何其他方法一样调用该变量

 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; };