C#2和3之间的差异

时间:2009-07-18 02:16:29

标签: c# .net c#-3.0 c#-2.0

我对C#或.net知之甚少,但我有兴趣了解它们。

引起我兴趣的一件事是我一直听说“C#3真的很棒” 这是为什么?与C#2的区别是什么?差异仅在C#或.net中吗?

提前致谢。

9 个答案:

答案 0 :(得分:11)

我有一篇关于此的文章:Bluffer's Guide to C# 3。显然my book中有更多细节,但它应该足以让你前进。简而言之:

  • 自动实施的属性:

    public int Value { get; set; }
    
  • 对象和集合初始值设定项:

    Form form = new Form { Size = new Size(100, 100),
                           Controls = { new Label { Text = "Hi" } }
                         };
    List<string> strings = new List<string> { "Hi", "There" };
    
  • 隐式输入的局部变量:

    var x = new Dictionary<string, int>(); // x is still statically typed
    
  • 隐式输入数组:

    DoSomething(new[] { "hi", "there"}); // Creates a string array
    
  • 匿名类型:

    var jon = new { Name = "Jon", Age = 33 };
    
  • Lambda表达式(如匿名方法,但更短):

    Func<string, int> lengthFunc = x => x.Length;
    
  • 表达树:

    // Representation of logic as data
    Expression<Func<string, int>> lengthExpression = x => x.Length;
    
  • 扩展方法:(静态方法,就像第一个参数类型的实例方法一样)

    public static string Reverse(this string text)
    {
        char[] chars = text.ToCharArray();
        Array.Reverse(chars);
        return new string(chars);
    }
    
    ...
    
    string hello = "olleh".Reverse();
    
  • 查询表达式:

    var query = from person in people
                where person.Age > 18
                select person.Name;
    

答案 1 :(得分:3)

您可以在Wikipedia article中了解C#3.0中引入的所有内容。

答案 2 :(得分:3)

这是一个太大的问题,回答问题的最佳来源是C# in depth Jon Skeet {/ 3>}

答案 3 :(得分:3)

C#3.0最突出的主题是数据,它通过语言集成查询(LINQ)实现。大多数其他语言功能(例如隐式类型的局部变量,匿名类型,lambda表达式和扩展方法)都被添加以支持LINQ。 LINQ是一种在代码中编写类似SQL的语句来查询多种类型的数据源的方法。有吸引力的是,您现在有一种编写代码来访问不同数据源的常用方法,这意味着每次MS引入新的数据访问技术或您需要使用时,您都不必完全重新学习轮子。第三方数据源。由于大多数主要数据库供应商都以某种方式支持LINQ,因此这种查询数据的常用方法的好处正在实现。

有些人喜欢LINQ而其他人则没有。我在营地里认为它是语言的一个很好的补充,但是你应该看看你自己的要求和情况,并就是否采用C#3.0是否适合你做出明智的决定。

答案 4 :(得分:2)

Here's a list 3.0中的一些新内容。很多很棒的东西。

答案 5 :(得分:2)

Linq,lambda,var keywork,desition trees,anonymous objects,short property syntax,object initializers,collection initializers,Extension Methods。

但Lambda和扩展方法是最重要的。 C#3.0非常好。

答案 6 :(得分:2)

差异实际上是在C#而不是(仅仅)在.NET中。

有趣的是,使用Visual Studio 2008多目标,您可以在以前仅限于C#2.0的.NET 2.x项目中使用C#3.0中的大多数漂亮的东西。

你没有得到

  • 表达式树转换,
  • Linq查询关键字,[Skeet说你可以......]

但你得到了

  • Lamda表达式[Skeet说]
  • 集合和对象初始化器
  • 隐式输入的局部变量和匿名类型,即var
  • 自动实施的属性和
  • 部分方法定义

所以,开始使用新的语法糖。

答案 7 :(得分:1)

有很多关于这个主题的文章:

请参阅:http://www.developer.com/net/csharp/article.php/3561756

答案 8 :(得分:0)

C#的演变如下:

  • 1.0:托管代码
  • 2.0:泛型
  • 3.0:LINQ
  • 4.0:动态编程
  • 5.0:异步编程

见PDC 10的Anders Hejlsberg在演示文稿The Future of C# and Visual Basic中的幻灯片5。