BT

LINQ and Dynamic Typing

by Jonathan Allen on Nov 30, 2008 |

The biggest feature of C# 3 was LINQ technology. With C# 4, it looks like dynamic typing is going to steal the show. But can you use them together?

On the of core features to LINQ is extension methods. Extension methods allow common functional to be added to interfaces such as IEnumerable. Extension methods are essentially a compiler trick that uses all the locally imported namespaces combined with the variable's static type to determine the appropriate function to call. With dynamic variables, the variables type is not know until runtime. But by that time, information about which namespaces were imported are long gone.

Anonymous functions are also important for LINQ. Anonymous functions are statically compiled in C# to real functions using the context to determine what parameter types to emit. Without a known type, the compiler would have to emit parameters of type object only, something that it normally doesn't do.

Neither of these limitations are insurmountable. There is no reason why the compiler couldn't capture the compile-time context needed for determining which extension method to bind to. Likewise, it could emit anonymous functions of type object and resort to dynamic calls for method and property invocation. But languages evolve slowly, and according to Mads Torgersen there are no plans to address these limitations in C# 4.

You can find out more on the C# Future site.

Hello stranger!

You need to Register an InfoQ account or to post comments. But there's so much more behind being registered.

Get the most out of the InfoQ experience.

Tell us what you think

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Email me replies to any of my messages in this thread

No big deal by Francois Ward

This is really no big deal. The dynamic typing features of C# 4.0 or mostly for compatibility with other dynamic languages (working with objects that were not created in C#), and for COM interop.

Basically, if the C# 4.0's dynamic typing features don't play too well with C# 4.0's OWN other features, it is really irrelevent: thats not even why dynamic typing is there in the first place. Besides, if you're playing with dynamic typing, you can just add the new method to the object to begin with, extension methods are almost redundant.

This is like the var keyword: lets not forget why these features are added in the first place. It isn't to make C# the new Ruby.

Re: No big deal by Jonathan Allen

I tend to agree with you, but we can't really know how people are going to use this stuff until it actually happens.

Personally, I shy away from most dynamic features and am looking forward to as much "bondage and discipline" as I can get from the new code contracts. But that doesn't mean there won't be a significant group of C# developers that embrace dynamic tying with open arms and leverage it to the hilt.

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Email me replies to any of my messages in this thread

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Email me replies to any of my messages in this thread

2 Discuss

Educational Content

General Feedback
Bugs
Advertising
Editorial
InfoQ.com and all content copyright © 2006-2013 C4Media Inc. InfoQ.com hosted at Contegix, the best ISP we've ever worked with.
Privacy policy
BT