gpt4 book ai didi

c# - Func 的 Invoke 属性是什么?

转载 作者:太空狗 更新时间:2023-10-30 00:44:35 25 4
gpt4 key购买 nike

这可以编译,但第二种方法被标记为“函数在所有路径上都是递归的。”调用它会导致 StackOverflowException。 Intellisense(带 ReSharper)提供 Invoke 作为属性。

public class Class1
{
public void MyMethod(string value)
{
Console.WriteLine(value);
}

public void MyMethod(Func<string> getValue)
{
MyMethod(getValue.Invoke);
}
}

将其更改为按预期工作:

    public void MyMethod(Func<string> getValue)
{
MyMethod(getValue.Invoke());
}

这是怎么回事?这只是 Intellisense 的怪异现象,还是实际上有一个 Invoke 属性?

最佳答案

它是 Invoke method - 但通过方法组转换进行转换...然后递归。看看这是否使它更清晰 - 这是等效的代码:

public void MyMethod(Func<string> getValue)
{
Func<string> func = getValue.Invoke;
MyMethod(func); // Eek, recursive!
}

(我暂时假设您熟悉方法组转换作为获取委托(delegate)实例的一种方式。如果您不熟悉,请告诉我,我会详细介绍。)

关于c# - Func<T> 的 Invoke 属性是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7486150/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com