Issue
Windows forms extension method Invoke()
doesn't accept a lambda expression, without us having to first typecast it to a delegate type like Action
. This makes me wonder, if lambda expression (with a body) is not explicitly a delegate nor an expression, what is its type?
Solution
This makes me wonder, if lambda expression (with a body) is not explicitly a delegate nor an expression, what is its type?
It doesn't have a type in the normal sense of the word (i.e. a CLR type), just like null
doesn't have a type. (Older versions of the C# specification had the concept of a "null type", but that was removed.)
Instead, it's an expression which is convertible to any compatible concrete delegate or expression tree type.
See section 7.1 of the C# 5 specification ("Expression Classification") for details - the relevant bullet points (out of the list of kinds of expression) are:
- A null literal. An expression with this classification can be implicitly converted to a reference type or nullable type.
- An anonymous function. An expression with this classification can be implicitly converted to a compatible delegate type or expression tree type.
Answered By - Jon Skeet Answer Checked By - Marie Seifert (PHPFixing Admin)
0 Comments:
Post a Comment
Note: Only a member of this blog may post a comment.