gpt4 book ai didi

c# - 为什么不能推断出这些泛型类型?

转载 作者:太空狗 更新时间:2023-10-29 22:27:59 26 4
gpt4 key购买 nike

我有以下代码:

public static class CardView {
public static object Column<TModel, TResult>(Func<TModel, TResult> field) {
return null;
}
}

public class Person
{
public string Name { get; set; }
public bool Gender { get; set; }
}

void Main()
{
var model = new Person() { Name = "Andre", Gender = true };

var b = CardView.Column(model => model.Name); // ERROR
// The type arguments for method 'UserQuery.CardView.Column<TModel,TResult>(System.Func<TModel,TResult>)' cannot be inferred from the usage. Try specifying the type arguments explicitly.
}

出于某种原因,它无法为 Column 方法推断通用类型。我需要知道为什么。我不能放弃类型推断并自己指定类型,因为这只是一个大问题的案例研究,它是必不可少的。

编辑

我把代码拼错了 =/刚刚改正了

最佳答案

为了让编译器执行类型推断,必须为其提供某种类型信息。在这种情况下,它提供的唯一信息是一个无类型的 lambda 表达式。编译器在这里真的无事可做。

有几种方法可以解决这个问题。最简单的是在 lambda 参数中添加一个类型

var b = CardView.Column((Person m) => m.Name);

关于c# - 为什么不能推断出这些泛型类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8418087/

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