C#匿名类型简单介绍

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()方法
THE END