代表和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<int> f = () => { return 123; };
Delegate t = f;
实际上正在使用构造函数:
Func<int> f = new Func<int>(() => { return 123; });
但是,不存在接受lambda表达式的Delegate构造函数,也不存在它们之间的隐式转换。