📜  什么是C#中的匿名类型?(1)

📅  最后修改于: 2023-12-03 15:06:25.364000             🧑  作者: Mango

什么是C#中的匿名类型?

在C#中,匿名类型是一种没有显式命名类型的临时对象。它们通常用于存储一组相关属性值。它们的类型仅在编译时才能确定。

创建匿名类型

要创建一个匿名类型,可以使用一个对象初始化器,并在花括号中指定一个或多个属性名和它们的值。例如:

var person = new { Name = "John", Age = 30 };

在上面的示例中,我们创建了一个包含两个属性的匿名类型,Name和Age。我们使用var关键字声明变量person,并初始化它为一个新的匿名类型。

访问匿名类型属性

通过使用点号运算符(.)可以访问匿名类型的属性。例如:

var person = new { Name = "John", Age = 30 };
Console.WriteLine($"Name: {person.Name}, Age: {person.Age}");

上面的代码输出:

Name: John, Age: 30
限制匿名类型

匿名类型是有限制的。以下是一些限制:

  • 属性必须具有名称。
  • 属性类型必须是可序列化的。
  • 匿名类型是只读的,不能更改属性的值。
  • 可以通过反射来访问属性,但不能使用强类型调用。
示例代码

下面是一个使用匿名类型的示例代码:

var people = new[] {
    new { Name = "John", Age = 30, Gender = "Male" },
    new { Name = "Mary", Age = 25, Gender = "Female" },
    new { Name = "Mike", Age = 35, Gender = "Male" }
};

foreach (var person in people)
{
    Console.WriteLine($"Name: {person.Name}, Age: {person.Age}, Gender: {person.Gender}");
}

上面的代码输出:

Name: John, Age: 30, Gender: Male
Name: Mary, Age: 25, Gender: Female
Name: Mike, Age: 35, Gender: Male
总结

匿名类型是C#中的一个有用特性,可以用于临时存储一组相关属性值。它们易于创建和使用,但有一些限制。因为它们是临时的,所以不应该长期存储或传递它们。