命名和可选参数适用于.NET 2.0

Pra*_*tia 2 c# visual-studio-2010

我在Visual Studio 2010中创建了一个控制台项目,并选择了.Net Framework 2.0

namespace ConsoleApp1
{
  class Program
  {
    public int Add(int a, int b = 0, int c = 0)
    {
      Console.WriteLine("a is " + a);
      Console.WriteLine("b is " + b);
      Console.WriteLine("c is " + c);
      return a + b + c;
    }

    public static void Main()
    {
      Program o = new Program();
      Console.WriteLine(o.Add(10));
      Console.WriteLine(o.Add(10, 10));
      Console.WriteLine(o.Add(10, 10, 10));
      Console.WriteLine(o.Add(b: 20, a: 10));
      Console.ReadLine();
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

它运作成功.

但是,如果我在Visual Studio 2008中输入相同的代码,则会失败!

任何人都可以帮我解决这个问题,因为C#4附带了Named和Optional Parameters吗?

Dav*_*haw 7

这是因为命名参数是C#语言的一个特性,而不是.net运行时的特性.

您的VS2010使用C#4.0编译器,VS2008使用C#3.0.

这意味着您可以针对较旧的运行时库使用该语言的较新功能.

如果你自己实现了Linq方法,你甚至可以在.Net 2.0和VS 2010中使用Linq(lamda语法)(参见Linq Bridge项目 - 这篇文章也有关于它如何工作的更深入的讨论).