我正在使用 AgileMapper 和以下代码:
source.Map().OnTo(target, (options) =>
options.IgnoreSources((options) =>
options.If((value) => value is null)
)
);
然而,编译器抱怨:
表达式树可能不包含模式匹配的“is”表达式`
如果我使用它就有效value == null
,但我想明白为什么is
不工作?
value is null
使用常量模式。模式匹配是在表达式树出现很久之后才在 C# 7 中引入的,并且(当前)不能在表达式树中使用。这可能会在某个时候实施,但目前是无效的。请注意,这仅适用于表达式树,不适用于转换为委托的 lambda 表达式。例如:
using System;
using System.Linq.Expressions;
class Program
{
static void Main()
{
object x = null;
Func<bool> func = () => x is null; // Fine
Expression<Func<bool>> expression = () => x is null; // CS8122
}
}
表达式树中的代码有各种限制。例如,您不能使用动态操作或元组文字。对模式匹配的限制只是另一个例子。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)