【发布时间】:2009-07-18 02:16:28
【问题描述】:
我对 C# 或 .net 知之甚少,但我有兴趣了解它们。
让我感兴趣的一件事是,我不断听到“C# 3 真的很棒”。
这是为什么?与 C# 2 有什么区别。仅在 C# 中还是在 .net 中也有区别?
提前致谢。
【问题讨论】:
我对 C# 或 .net 知之甚少,但我有兴趣了解它们。
让我感兴趣的一件事是,我不断听到“C# 3 真的很棒”。
这是为什么?与 C# 2 有什么区别。仅在 C# 中还是在 .net 中也有区别?
提前致谢。
【问题讨论】:
我有一篇关于这个的小文章: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;
【讨论】:
您可以在Wikipedia article 中阅读有关 C# 3.0 中引入的所有内容。
【讨论】:
这个问题太大了,回答你问题的最佳来源是C# in depthJon Skeet
【讨论】:
C# 3.0 最突出的主题是数据,它是通过语言集成查询 (LINQ) 实现的。大多数其他语言功能,例如隐式类型化的局部变量、匿名类型、lambda 表达式和扩展方法,都被添加以支持 LINQ。 LINQ 是一种在代码中编写类似 SQL 的语句来查询多种类型的数据源的方法。吸引人的地方在于,您现在有一种通用的方式来编写代码来访问不同的数据源,这意味着您不必在每次 MS 引入新的数据访问技术或您需要使用第三方数据源。由于大多数主要数据库供应商都以某种方式支持 LINQ,因此这种查询数据的通用方式的好处今天正在实现。
有些人喜欢 LINQ,有些人不喜欢。我的阵营认为它是对语言的一个很好的补充,但你应该看看你自己的要求和情况,并就采用 C# 3.0 是否适合你做出明智的决定。
【讨论】:
Here's a list 3.0 中的一些新内容。很多很棒的东西。
【讨论】:
Linq、lambda、var keywork、目标树、匿名对象、较短的属性语法、对象初始化器、集合初始化器、扩展方法。
但是 Lambda 和扩展方法是最重要的。 C# 3.0 非常棒。
【讨论】:
真正的区别在于 C# 而不是(仅)在 .NET 中。
有趣的是,借助 Visual Studio 2008 多目标,您可以在以前仅限于 C# 2.0 的 .NET 2.x 项目中使用 C# 3.0 中的大部分好东西。
你没有得到
但你确实得到了
var
所以,开始使用新的语法糖吧。
【讨论】:
关于这个话题的文章很多:
【讨论】:
C#的演变是这样的:
请参阅来自 PDC 10 的 Anders Hejlsberg 的演示文稿 The Future of C# and Visual Basic 中的幻灯片 5。
【讨论】: