在 Beta 2 中,.NET 中的两种旗舰语言——C#和 Visual Basic 各自的功能集合都已经确定。以前我们曾经介绍过只在 VB 中出现的特性,例如可变匿名类型和 XML 常量等。而今天本文则要介绍一些只在 C#中出现的特性。
第一个特性是用于创建数据类的一个语法上的便捷之处。借助于自动属性(Automatic Properties)语法,C#开发者无需书写任何重复的代码即可容易地创建属性。
public int X { get; private set; }
上面这句代码创建了一个名为 X 的属性,该属性的 getter 是公有的,setter 是私有的。在使用上述语法时,编译器将自动生成一个私有字段并与上述 getter 和 setter 关联起来。
虽然这样的自动属性语法看上去有些类似于公有字段,不过它却有着一些值得称道的优势。首先,很多内建的类型(比如列表和数据网格)只能绑定到属性上。从长远角度考虑,使用属性也能够让开发者在需要的时候为其添加更加复杂的逻辑,而同时却并不需要改变类型的公共接口。
另一个 C#中的特性就是集合初始化器。
var mystrings = new List
{ “Alice”, “Bob”, “Charlie” };.
借助于类似数组初始化器的语法,上述代码将自动调用该集合的 Add 方法将达括号中的每一个条目添加到集合中。当然,这个特性并不能够应用于任何对象上,可使用该特性的对象应该提供一个 Add 方法,且该 Add 方法接受一个参数。
上面的这些示例程序均来自于 Jomo Fisher 的文章 The Least You Need to Know about C# 3.0 。
需要注意的是,关于闭包和 lambada 表达式等令人激动的特性,Visual Basic 只能够支持单行的匿名方法。而 C#则更为强大——借助于新的委托语法,C#将能够支持多行的匿名方法。
查看英文原文: New C# Features Not Found in VB
评论