📅  最后修改于: 2023-12-03 15:14:27.319000             🧑  作者: Mango
C# 3.0 引入了匿名类型(anonymous types),它可以让开发人员在编译时创建一个类型,而无需显示地声明一个类。匿名类型通常用于临时的数据查询,它们只存在于包含它们的方法或区域中,并且不能作为参数或返回值来传递。
在 C# 中,使用 new
关键字和一个对象初始化器来创建一个匿名类型。语法如下:
var <变量名> = new { <属性名1>=<值1>, <属性名2>=<值2>, ... };
下面是一个简单的例子,创建一个匿名类型来表示一个人的姓名和年龄:
var person = new { Name = "张三", Age = 30 };
在上面的代码中,Name
和 Age
是属性名,"张三"
和 30
是初始化后的值。声明变量时,使用 var
关键字,编译器将推断出变量的类型,因此不需要在代码中显示声明类型。
您还可以使用一个数组初始化器来初始化一个匿名类型数组。下面是一个示例,展示如何创建一个包含多个人的匿名类型数组:
var people = new[] {
new { FirstName = "张", LastName = "三", Age = 30 },
new { FirstName = "李", LastName = "四", Age = 40 },
new { FirstName = "王", LastName = "五", Age = 20 }
};
匿名类型的属性可以使用点号(.
)访问。下面的示例演示了如何访问一个匿名类型的属性:
var person = new { Name = "张三", Age = 30 };
Console.WriteLine("姓名:{0},年龄:{1}", person.Name, person.Age);
输出结果为:
姓名:张三,年龄:30
C# 中的 LINQ(Language Integrated Query)允许您在集合上查询数据。匿名类型通常用于查询结果,因为它们可以保留查询结果的结构,并且不必显式定义一个类。
下面是一个示例,使用 LINQ 查询一组数字的平均值和最大值,并返回一个匿名类型:
var numbers = new[] { 1, 2, 3, 4, 5 };
var result = new { Average = numbers.Average(), Max = numbers.Max() };
Console.WriteLine("平均值:{0},最大值:{1}", result.Average, result.Max);
输出结果为:
平均值:3,最大值:5
尽管匿名类型非常方便和易于使用,但它们也有一些局限性:
总的来说,匿名类型是一个简单而有用的功能,它可以让开发人员更容易地创建临时对象而无需定义一个类。但是,在处理更复杂的数据类型时,建议使用显式声明的类或结构体。