gpt4 book ai didi

c#-3.0 - 将方法组转换为表达式

转载 作者:行者123 更新时间:2023-12-03 06:26:38 25 4
gpt4 key购买 nike

我试图弄清楚是否有一个简单的语法可以将方法组转换为表达式。使用 lambda 看起来很简单,但它不能转换为方法:

给定

public delegate int FuncIntInt(int x);

以下所有内容均有效:

Func<int, int> func1 = x => x;
FuncIntInt del1 = x => x;
Expression<Func<int, int>> funcExpr1 = x => x;
Expression<FuncIntInt> delExpr1 = x => x;

但是如果我尝试使用实例方法进行相同的操作,它会在表达式处崩溃:

Foo foo = new Foo();
Func<int, int> func2 = foo.AFuncIntInt;
FuncIntInt del2 = foo.AFuncIntInt;
Expression<Func<int, int>> funcExpr2 = foo.AFuncIntInt; // does not compile
Expression<FuncIntInt> delExpr2 = foo.AFuncIntInt; //does not compile

最后两个都无法编译,并显示“无法将方法组 'AFuncIntInt' 转换为非委托(delegate)类型 'System.Linq.Expressions.Expression<...>'。您打算调用该方法吗?”

那么有没有一种好的语法可以在表达式中捕获方法组?

谢谢,阿恩

最佳答案

这个怎么样?

  Expression<Func<int, int>> funcExpr2 = (pArg) => foo.AFuncIntInt(pArg);
Expression<FuncIntInt> delExpr2 = (pArg) => foo.AFuncIntInt(pArg);

关于c#-3.0 - 将方法组转换为表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1004156/

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