This piece of code compiles OK in VS 2010 in a framework 3.5 project (I triple checked that)
public LoggingClient(string uri = "net.msmq://localhost/logging"){...}
Why? I see nothing in the C# 4 spec (doc version), section 21.1, that says this should be backwardly compatible. How is it that I get no compilation error? Will this fail silently in some circumstances?
Project + Properties, Build tab, scroll down, Advanced. You can change the Language Version to “C# 3.0” if you prefer to maintain source code compatibility.
But yes, you are using the C# 4.0 compiler in VS2010, regardless of the target .NET version you use. The output of the compiler, IL, hasn’t changed in .NET 4.0. No, you can’t use dynamic, it requires a .NET 4.0 only support assembly (Microsoft.CSharp.dll)