Facilitating the Spread of Knowledge and Innovation in Professional Software Development

Write for InfoQ


Choose your language

InfoQ Homepage News LINQ and Dynamic Typing

LINQ and Dynamic Typing

Leia em Português

This item in japanese

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.

Rate this Article