LINQ,Generics和Object Initializers是否可以在.NET 2.0 Framework中运行?

时间:2011-02-11 03:26:36

标签: c# .net .net-2.0

void Main()
{
    List<Person> person = new List<Person>
    {
        new Person { Name = "Maria Anders", Age = 21 },
        new Person { Name = "Ana Trujillo", Age = 55 },
        new Person { Name = "Thomas Hardy", Age = 40 },
        new Person { Name = "Laurence Lebihan", Age = 18 },
        new Person { Name = "Victoria Ashworth", Age = 16 },
        new Person { Name = "Ann Devon", Age = 12 }
    };

    person.Select(x => new { x.Name, x.Age }).Dump();
}

class Person
{
    public string Name { get; set; }
    public int Age { get; set; }
}

如果没有,请将其转换为2.0编码。

2 个答案:

答案 0 :(得分:2)

正如约翰在评论中所说,这里有两个问题:C#语言版本和.NET版本。

泛型将在C#2及更高版本(VS2005及更高版本)以及.NET 2.0及更高版本中运行。

对象初始化程序将在C#3及更高版本(VS2008及更高版本)中运行,但不需要任何特定版本的.NET Framework。

LINQ 需要C#3或更高版本, .NET 3.5及更高版本。

答案 1 :(得分:0)

根据您的转储方法应该执行的操作,针对.NET 2.0的C#3.0代码 *可能如下所示:

static void Main()
{
    List<Person> person = new List<Person>
    {
        new Person { Name = "Maria Anders", Age = 21 },
        new Person { Name = "Ana Trujillo", Age = 55 },
        new Person { Name = "Thomas Hardy", Age = 40 },
        new Person { Name = "Laurence Lebihan", Age = 18 },
        new Person { Name = "Victoria Ashworth", Age = 16 },
        new Person { Name = "Ann Devon", Age = 12 }
    };

    person.ForEach(x => Dump(x));

}

static void Dump(Person p)
{
    Console.WriteLine("{0} {1}", p.Name, p.Age);
}

class Person
{
    public string Name { get; set; }
    public int Age { get; set; }
}

*有关C#版本与.NET平台版本的详细信息,请参阅itowlson's answer