gpt4 book ai didi

c# - 无法将 lambda 表达式转换为类型 'object',因为它不是委托(delegate)类型

转载 作者:IT王子 更新时间:2023-10-29 04:12:56 24 4
gpt4 key购买 nike

我有一个基类,它有一个 bool 属性,如下所示:

public abstract class MyBaseClass
{
public bool InProgress { get; protected set; }
}

我正在从它继承另一个类,并尝试将 InProgress 作为委托(delegate)添加到字典中。但它给我一个错误。这就是我的派生类的样子:

public abstract class MyClass
{
Dictionary<string, object> dict = new Dictionary<string, object>();
dict.Add("InProgress", InProgress => base.InProgress = InProgress);

}

这是我遇到的错误:

Cannot convert lambda expression to type 'object' because it is not a delegate type

我在这里做错了什么?

最佳答案

最好是使用强类型字典,但如果您首先将 lambda 分配给特定的 lambda(委托(delegate)),它应该可以工作(因为编译器随后知道委托(delegate)格式):

Action<bool> inp = InProgress => base.InProgress = InProgress;
dict.Add("InProgress", inp);

或者直接转换,效果一样

dict.Add("InProgress", (Action<bool>)(InProgress => base.InProgress = InProgress));

当然可以讨论像对象这样的字典格式,因为您必须知道委托(delegate)格式才能使用它。

关于c# - 无法将 lambda 表达式转换为类型 'object',因为它不是委托(delegate)类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23247125/

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