我是Linq和代表的新手以及我所遇到的所有问题:
我试过了:
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
之间的区别吗?
答案 0 :(得分:3)
你遗漏的事实是:
Func<int> f = () => { return 123; };
Delegate t = f;
实际上是使用构造函数:
Func<int> f = new Func<int>(() => { return 123; });
但是没有Delegate构造函数在它们之间采用lambda表达式或隐式转换。