飞道的博客

C# 匿名对象_C#匿名类型_C# 匿名对象使用整理

384人阅读  评论(0)

一、C# 匿名对象概念

匿名类:没有命名的类,不需要定义,也是继承自object。

匿名对象:new 出来的匿名类的对象,没有固定类型的对象。

变量声明,必须指定类型,没有指名类型就是匿名类型。所有的对象继承自object类,也可以说是object类型。

语法规则:

new { ID=1,Name=""}

二、C# 匿名对象的使用场景

1.使用object 声明


  
  1. object student2 = new
  2. {
  3. ID = 2,
  4. Name = "李四",
  5. Age = 20
  6. };

2. 使用 var 声明


  
  1. var student = new
  2. {
  3. ID = 1,
  4. Name = "张三"
  5. };

3.使用dynimac 声明


  
  1. dynamic student3 = new
  2. {
  3. ID = 3,
  4. Name = "王五"
  5. };
  6. student3.Age = 30;

4.匿名对象 和 Linq 搭载


  
  1. //匿名对象 和 Linq
  2. int[] nums = new int[] { 1, 2, 3 };
  3. var studentList = nums.Select(q => new
  4. {
  5. ID = q,
  6. Name = "姓名" + q
  7. });

 

三、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
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场