C#匿名类型简单介绍

开发 后端
这里介绍C#匿名类型,包括介绍可以使用new关键字调用匿名初始化器创建一个匿名类型的对象,匿名类型直接继承自System. Object。

C# 3.0新语言特性还是比较常见的东西,这里我们主要介绍C#匿名类型,包括介绍C#匿名类型允许定义行内类型,无须显式定义类型等方面。

总体来说,Visual Studio 2008和.NET 3.5是建立在.NET2.0核心的基础之上,.NET2.0核心本身将不再变化(如果不了解.NET2.0的朋友,请参看MSDN或者一些经典的书籍),C# 3.0新语言特性在.NET2.0基础上进行了改进,这些改进的功能可以大大简化我们编写程序。关于C# 3.0新语言特性在博客园里的很多朋友都介绍了,我在这里简单介绍一下,记录自己所学的东西,也为后面的LINQ打下基础。

C# 3.0新语言特性和改进包括:
◆自动属性(Auto-Implemented Properties)
◆隐含类型局部变量(Local Variable Type Inference)
◆匿名类型(Anonymous Types)
◆对象与集合初始化器(Object and Collection Initializers)
◆扩展方法(Extension Methods)
◆Lambda表达式和Lambda表达式树 (Lambda Expression and Lambda Expression Trees)

C#匿名类型(Anonymous Types)

C#匿名类型允许定义行内类型,无须显式定义类型。常和var配合使用来声明匿名类型。

  1. var p1 = new { Id = 1Name = "YJingLee"Age = 22 };//属性也不需要申明  
  2. var p2 = new { Id = 2Name = "XieQing"Age = 25 };  
  3. p1 = p2;//p1,p2结构相同,可以互相赋值 

匿名类型调试

在这里编译器会认为p1,p2相当于:

  1. public class SomeType  
  2. {  
  3. public int Id { get; set; }  
  4. public string Name { get; set; }  
  5. public int Age { get; set; }  

那么数组怎么定义呢?使用"new[]"关键字来声明数组,加上数组的初始值列表。像这样:

  1. var intArray = new[] { 2, 3, 5, 6 };  
  2. var strArray = new[] { "Hello", "World" };  
  3. var anonymousTypeArray = new[]   
  4. {   
  5. new { Name = "YJingLee"Age = 22 },   
  6. new { Name = "XieQing"Age = 25 }   
  7. };  
  8. var a = intArray[0];  
  9. var b = strArray[0];  
  10. var c = anonymousTypeArray[1].Name; 

匿名数组调试

C#匿名类型要点:
1. 可以使用new关键字调用匿名初始化器创建一个匿名类型的对象。
2. 匿名类型直接继承自System. Object。
3. 匿名类型的成员是编译器根据初始化器推断而来的一些读写属性。

【编辑推荐】

  1. C# const常量详细介绍
  2. C# Lambda表达式学习笔记
  3. C#隐式类型局部变量经验总结
  4. 调用C# Thread.Start()方法
  5. C# CheckStatus()方法
责任编辑:佚名 来源: chinaitlab
相关推荐

2009-08-20 16:25:59

C# 匿名方法

2009-08-10 17:25:58

C#匿名类型

2009-08-03 17:51:43

C#引用类型

2009-08-26 15:46:01

C#匿名类型

2009-09-07 10:48:53

C#数据类型

2009-09-04 10:16:30

C#数据类型

2009-09-01 10:58:46

C#匿名类型对象

2009-08-07 17:12:07

C# DLL函数

2009-08-25 13:38:35

C# Timer组件

2009-09-03 09:40:57

C#创建表单

2009-08-06 18:15:13

C# SQL Serv

2009-08-13 17:36:54

编译C#代码

2009-09-01 16:19:57

C# new()约束

2009-08-14 16:46:44

C#元数据

2009-08-18 17:37:57

C#固定指针

2009-08-06 14:53:41

C# User类

2009-08-10 16:19:37

C#冒泡排序

2009-08-14 17:27:56

C#方法参数

2009-08-21 17:55:52

C#复合控件

2009-08-07 17:41:40

C#预处理
点赞
收藏

51CTO技术栈公众号