一、C# 匿名对象概念
匿名类:没有命名的类,不需要定义,也是继承自object。
匿名对象:new 出来的匿名类的对象,没有固定类型的对象。
变量声明,必须指定类型,没有指名类型就是匿名类型。所有的对象继承自object类,也可以说是object类型。
语法规则:
new { ID=1,Name=""}
二、C# 匿名对象的使用场景
1.使用object 声明
object student2 = new
{
ID = 2,
Name = "李四",
Age = 20
};
2. 使用 var 声明
var student = new
{
ID = 1,
Name = "张三"
};
3.使用dynimac 声明
dynamic student3 = new
{
ID = 3,
Name = "王五"
};
student3.Age = 30;
4.匿名对象 和 Linq 搭载
//匿名对象 和 Linq
int[] nums = new int[] { 1, 2, 3 };
var studentList = nums.Select(q => new
{
ID = q,
Name = "姓名" + q
});
三、var 类型 和dynamic 类型的区别
var的特点:
1、var 仅能声明方法内的局部变量
2、var 声明的变量在被赋值后类型即确定下了,后续程序中不能在赋其他类型的值
dynamic的特点:
1、dynamic 表示动态类型,动态类型的含义就是 程序编写、编译阶段 类型不确定,在Runtime时再通过反射机制确定相关对象的属性或方法。因此编写阶段不会进行语法检测。
2、dynamic 可用来声明 字段、属性、方法参数、方法返回值
3、dynamic 不支持智能提示,因为你写代码时 dynamic 是什么没法知晓(反射)
dynamic 声明的变量,可理解为 object 类型变量。所以给dynamic变量赋任何类型值都正确,但在使用变量来取得某个属性值或调用某方法时(此时程序肯定处于Runtime状态),CLR会检查(反射)所调用的属性或方法是否存在,不存在报运行时异常。
var 和 dynamic 看似功能类似,但它们是不同的:
| var | dynamic | |
| 声明字段 | × | √ |
| 局部变量 | √ | √ |
| 方法参数类型 | × | √ |
| 方法返回值类型 | × | √ |
更多:
本文详细介绍了C#中匿名对象的概念,展示了其在不同声明方式(object、var和dynamic)的应用,并对比了var和dynamic类型的差异。深入探讨了它们在实际编程中的使用场景和特性区别。
6261

被折叠的 条评论
为什么被折叠?



