如何:声明匿名类型的实例 (Visual Basic)

匿名类型使您无需为数据类型编写类定义即可创建对象。 此时编译器将为您创建类。 因为未指定数据类型的名称,所以该类型称为“匿名类型”。

通过使用初始值设定项列表来指定类型的属性,可以声明匿名类型的实例。 您需要提供实例的名称、每个属性的名称以及每个属性的初始值,并指示每个属性是否为键属性。

声明

声明匿名类型的实例

  1. 不带 As 子句开始一个 Dim 语句。

    Dim instanceName

  2. 在该语句中,将该类型的属性列表(该列表需要括在大括号内,并且需要在前面加上关键字 New With)赋给 instanceName。

    Dim instanceName = New With {<property names and initial values>}

    以句点开始每个新的属性名称,并为其分配初始值。 如果希望属性成为键属性,则在属性名称前面加上关键字 Key。 (有关更多信息,请参见 Key (Visual Basic)。)使用逗号分隔各个属性。 请注意,不能直接指定属性的数据类型。 类型根据初始值推断得到。

    Dim instanceName = New With {Key .Rank = 8,
                                 Key .Title = "Comptroller",
                                 .Location = "headquarters"}
    
  3. 声明完成。 您可以像访问任何对象的属性一样访问 instanceName 的属性,区别在于无法更改键属性的值。

    instanceName.Location = "conference"
    Console.WriteLine(instanceName.Title)
    ' The following statement does not compile, because Rank is
    ' a key property and cannot be changed.
    ' instanceName.Rank = 9
    
  4. 有关声明匿名类型属性的其他方式的信息,请参见如何:推断匿名类型声明中的属性名和类型 (Visual Basic)

可靠编程

如果要创建临时对象来包含相关数据,或者希望对每个声明选择不同的属性,则匿名类型是一个不错的选择。

匿名类型的使用存在一些限制。 最重要的是,匿名类型的名称不可用,不能出现在代码中需要使用类型名称的位置。 有关如何使用匿名类型编程的更多信息,请参见匿名类型 (Visual Basic)

请参见

任务

如何:推断匿名类型声明中的属性名和类型 (Visual Basic)

参考

Key (Visual Basic)

概念

局部类型推理 (Visual Basic)

匿名类型 (Visual Basic)