【发布时间】:2015-04-28 10:25:19
【问题描述】:
我想定义从(特定)lambda 表达式到用户定义类型的隐式转换。我尝试了以下方法:
public static implicit operator DualElement<T>(Func<OPTatom, OPTatom, T> atomMap)
{
return new DualElement<T>(e => atomMap(e[0],e[1]));
}
然后我尝试了
DualElement<double> dubidu = (i, j) => cost[i, j];
给出“无法转换 lambda 表达式...因为它不是委托类型”
相反,有效的是:
DualElement<double> dideldu = (Func<OPTatom, OPTatom, double>)((i, j) => cost[i, j]);
我猜,lambda 表达式没有“Func”类型,所以我必须在隐式转换中加入一些不同的东西。
有人可以给我一个提示吗?
【问题讨论】:
-
DualElement的定义是什么? -
@Sajjad:我有不同的 lambda 表达式,它们“意味着”是从 OPTelement 类型的元素到 T 的函数。我的目标是将它们隐式转换为相同的类型,这样我就没有根据 DualElement
的来源重载每个方法。
标签: c# lambda implicit-conversion