代表和Func Cast问题

本文关键字:Cast 问题 Func | 更新日期: 2023-09-27 17:58:46

我是Linq和Delegates的新手,我有以下问题:

我试过这个:

Func<int> f = () => { return 123; };
Delegate t = f;

Visual Studio没有显示错误,但我尝试了以下操作:

Delegate d = () => return 123;

不起作用

然后我尝试了这个:

Action a = delegate { Console.Out.WriteLine("test"); };
Delegate x = a;

它有效,但

Delegate j = delegate { Console.Out.WriteLine("test"); };

直接铸造似乎不起作用。为什么?

有人能解释一下代表(第一个大写字母)和代表(都是小写字母)以及Func<>Action之间的区别吗?

代表和Func Cast问题

您缺少以下事实:

Func<int> f = () => { return 123; };
Delegate t = f;

实际上正在使用构造函数:

Func<int> f = new Func<int>(() => { return 123; });

但是,不存在接受lambda表达式的Delegate构造函数,也不存在它们之间的隐式转换。