我对C#或.net知之甚少,但我有兴趣了解它们。
引起我兴趣的一件事是我一直听说“C#3真的很棒” 这是为什么?与C#2的区别是什么?差异仅在C#或.net中吗?
提前致谢。
答案 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中的大多数漂亮的东西。
你没有得到
但你得到了
var
所以,开始使用新的语法糖。
答案 7 :(得分:1)
有很多关于这个主题的文章:
答案 8 :(得分:0)
C#的演变如下:
见PDC 10的Anders Hejlsberg在演示文稿The Future of C# and Visual Basic中的幻灯片5。