6. 集合初始化器
集合初始化器类似于我们上面所说的对象的初始化器,由编译器来为我们完成插入集合的操作,这里不再细说,如下示例代码:
public class Demo7. 匿名类型
{
public static void Main()
{
var customer = new List<Customer>
{
new Customer{Name = "TerryLee", Age = 24},
new Customer{Name = "lhj", Age = 25}
};
}
}
匿名类型允许在无需指定名称的情况下创建结构化类型,经常和var关键字配合使用。如下面的代码段所示:
Code12:
public class Demo以上代码会隐式创建一个具有Name、Age字段的类型:
{
public static void Main()
{
var temp = new { Name = "TerryLee", Age = 24 };
Console.WriteLine("Name:{0} Age:{1}", temp.Name, temp.Age);
}
}
Code13:
class可以看到,隐式创建的类型并没有名称,所以你不能通过名称引用以上类型。
{
public String Name;
public int Age;
}
8. 扩展方法
扩展方法允许开发人员往一个现有的CLR类型的公开契约(contract)中添加新的方法,而不用生成子类或者重新编译原来的类型。扩展方法有助于把今天动态语言中流行的对duck typing的支持之灵活性,与强类型语言之性能和编译时验证融合起来。扩展方法除了在LINQ有助于简化我们的查询示例之外,还是一种广泛有用的语言功能,其中一个最常见的用途可能是提供共享接口实现。例如,假设我们有以下接口:
Code14:
interface ILog
{
// 默认的
void Write();
void Write(String msg);
}