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配合使用来声明匿名类型。
- var p1 = new { Id = 1, Name = "YJingLee", Age = 22 };//属性也不需要申明
- var p2 = new { Id = 2, Name = "XieQing", Age = 25 };
- p1 = p2;//p1,p2结构相同,可以互相赋值
在这里编译器会认为p1,p2相当于:
- public class SomeType
- {
- public int Id { get; set; }
- public string Name { get; set; }
- public int Age { get; set; }
- }
那么数组怎么定义呢?使用"new[]"关键字来声明数组,加上数组的初始值列表。像这样:
- var intArray = new[] { 2, 3, 5, 6 };
- var strArray = new[] { "Hello", "World" };
- var anonymousTypeArray = new[]
- {
- new { Name = "YJingLee", Age = 22 },
- new { Name = "XieQing", Age = 25 }
- };
- var a = intArray[0];
- var b = strArray[0];
- var c = anonymousTypeArray[1].Name;
C#匿名类型要点:
1. 可以使用new关键字调用匿名初始化器创建一个匿名类型的对象。
2. 匿名类型直接继承自System. Object。
3. 匿名类型的成员是编译器根据初始化器推断而来的一些读写属性。
【编辑推荐】