函数返回列表(结构)

时间:2019-01-25 14:41:46

标签: vb.net data-structures revit-api

我有一个返回List(Of StructSection)的函数,其中StructSection的定义如下:

Public Structure StructSection 'structure for Section information
    Public SectionName As String
    Public SectiontmpName As String
    Public SectionNewName As String
    Public Section As Autodesk.Revit.DB.View
End Structure

当我尝试在自己的Sub Main中使用该列表时,收到以下消息:

  

类型'StructSection'未定义。 (BC30002)

由于我尚未定义它,因此对我来说很有意义。但是,当我通过将上面的StrucSection定义粘贴到我的主代码中来定义它时,出现此错误:

  

类型'System.Collections.Generic.List(Of FSE.frmRenameSections.StructSection)'的值不能转换为'System.Collections.Generic.List(Of FSE.ThisDocument.StructSection)'。

即使两个结构的定义完全相同。谁能告诉我如何使用该List(of StructSection)?我真正想做的是确保列表中的每个结果都SectionNameSectiontmpNameSectionNewNameSection保持关联。 / p>

2 个答案:

答案 0 :(得分:2)

VB.NET是一种类型安全的语言。这意味着,如果您两次声明相同的类型,即使它们包含完全相同的成员,它们也被视为两个完全不同且不兼容的类型。

尝试一下:

Sub Main()
    ' ...
    Dim result As List(Of FSE.frmRenameSections.StructSection) = MyMethod()
    ' ...
End Sub

MyMethod是返回列表的方法的名称。

答案 1 :(得分:0)

您的第一条错误消息提到了两个不同的类:FSE.frmRenameSections.StructSectionFSE.ThisDocument.StructSection。对我来说,这好像您在不同的范围内两次定义了相同的类。尝试将StructSection拆分为自己的独立类,该类未嵌入任何其他类中。或者,如果它嵌入在其他某个类中,则使用其完整的类名(包括嵌入层次结构)显式地对其进行命名。