.Net 匿名类的定义与使用
#region 匿名类
/*
1.匿名类不支持定义方法,只能定义属性
*/
{
//.NetFramework3.0
object model = new
{
Id = 1,
Name = "测试",
};
//Console.WriteLine(model.Id);//因为C#是强类型语言,编译时类型决定了没有Id的属性
//运行时确实有Id、Name属性,但是编译器不认可
}
{
//.NetFramework4.0:出现了dynamic关键字,可以避开编译器检查
dynamic model = new
{
Id = 2,
Name = "测试2",
};
Console.WriteLine(model.Id);
Console.WriteLine(model.Name);
//Console.WriteLine(model.Description);
//model.Study();
//1.dynamic关键字声明匿名类,可以正常调用匿名类中的属性:Id、Name
//2.但是调用属性时,Vs没有提示
//3.还可以调用匿名类中没有的属性和方法,可以编译,但是运行时会报错
}
{
//.NetFramework3.0:出现了var关键字,var是个语法糖
var model = new
{
Id = 3,
Name = "测试3",
};
Console.WriteLine(model.Id);
Console.WriteLine(model.Name);
//Console.WriteLine(model.Description);
//model.Id = 4;
//1.var关键字声明匿名类,可以正常调用匿名类中的属性:Id、Name
//2.且调用属性时,Vs有提示
//3.匿名类中没有的属性和方法,无法调用
//4.属性时只读的,只有初始化时才可以赋值
}
#endregion