代表和Func Cast问题

时间:2014-04-16 12:24:40

标签: c# linq delegates

我是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之间的区别吗?

1 个答案:

答案 0 :(得分:3)

你遗漏的事实是:

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

实际上是使用构造函数:

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

但是没有Delegate构造函数在它们之间采用lambda表达式或隐式转换。