一、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# 数组_C#动态数组详解整理
DotNet 开发项目类型整理_C#开发项目类型整理
C#面向对象_C#面向对象开发开发整理
转载:https://blog.csdn.net/u011127019/article/details/113713600
查看评论