如下: C#是强类型语言,编译时决定了类型,object 决定了它没有ID属性,运行时确实有但是 ,编译器不认可
object obj = new
{
Id = 1,
Name = "哈哈哈",
age = 25
}
//Console.WriteLine(obj.Id);
//Console.WriteLine(obj.Name);
4.0出现的动态类型 dynamic 关键字可以避过编译器 ,--4.0出现的动态类型 dynamic
dynamic obj1 = new
{
Id = 1,
Name = "哈哈哈",
age = 25
}
Console.WriteLine(obj1.Id);
Console.WriteLine(obj1.Name);
obj1 .Study()
//可以瞎写,但是在运行时,没有 Study方法会报错
var:自动推测类型,还附有智能提示
var obj1 = new
{
Id = 1,
Name = "哈哈哈",
age = 25
}
Console.WriteLine(obj1.Id);
Console.WriteLine(obj1.Name);
//可以瞎写,但是在运行时,没有 Study方法会报错
智能提示:
匿名类,编译器会自动分配名字,将鼠标放到 变量上就可以看见,带特殊字符的类名 'a
另外:匿名类的属性是只读的,在初始化以后就不能改了:
反编译工具: