gpt4 book ai didi

c# - 如何在表达式树 C# 中使用隐式转换?

转载 作者:太空宇宙 更新时间:2023-11-03 23:09:12 25 4
gpt4 key购买 nike

我有一个简化的程序,它使用表达式:

public class Program
{
public static IEnumerable<char> foo1()
{
// For some reason I cannot change result type
return new char[] { 's', '1' };
}

public static string foo2()
{
// For some reason I cannot change result type
return "s1";
}

static void Main()
{
Expression cond = Expression.Condition(Expression.Constant(true),
Expression.Call(typeof(Program).GetMethod("foo1")),
Expression.Call(typeof(Program).GetMethod("foo2")));
}
}

执行过程中出现如下错误

Argument types do not match.

据我了解,c# 不使用隐式类型转换。我该如何解决这个问题?

最佳答案

构建表达式时,它不会为您添加隐式转换。您需要明确指出您要使用 Expression.Convert 应用转换运算符。

Expression cond = Expression.Condition(Expression.Constant(true),
Expression.Call(typeof(Program).GetMethod("foo1")),
Expression.Convert(Expression.Call(typeof(Program).GetMethod("foo2")), typeof(IEnumerable<char>)));

关于c# - 如何在表达式树 C# 中使用隐式转换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40046712/

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