The C# version is the version of the compiler invoked to compile source code, the VS version is the version of the visual studio IDE, which may support multiple framework versions. The version of the framework affects the version of the .NET BCL (base class libraries) that are available.
Thus, if you target the 2.0 Framework, as in your example, you can only use BCL libraries available in the 2.0 framework. Thus, you cannot use System.Linq.
However, since VS2010 uses the C# 4 compiler, you can use C# 4 compiler features , such as default parameters, and still target an older framework.
Thus, this will compile and run under the 2.0 Framework when built from VS2010 because the C# 4 compiler handles default parameters at compile-time:
class Program
{
public static void HelloWorld(string x = "Hi")
{
Console.WriteLine(x);
}
static void Main(string[] args)
{
HelloWorld();
HelloWorld("Buyah");
}
}