首页 > 解决方案 > 函数导致自己的结构数组

问题描述

在 Gen 类文件中,我得到了这个结构:

    Public Structure StructElements
        Public ID As Integer
        Public Name As String
    End Structure

然后这个函数:

 Public Function FillElements(_param As String, count As Integer) As StructElements
        Dim i As Integer = 0
        Dim myConn As SqlConnection = New SqlConnection
        Dim myCmd As SqlCommand
        Dim myReader As SqlDataReader

        myConn.ConnectionString = sc.ConfigurationManager.ConnectionStrings("sidConnectionString").ConnectionString
        myCmd = myConn.CreateCommand

        myCmd.CommandText = "SELECT * FROM " & _param

        Select Case _param
            Case = "Scopes"
                Dim Scope(count) As StructElements
                myConn.Open()
                myReader = myCmd.ExecuteReader()
                While myReader.Read
                    Scope(i).ID = myReader.Item(0)
                    Scope(i).Name = myReader.Item(1).ToString
                    i += 1
                End While
                myReader.Close()
                myCmd.Dispose()
                myConn.Close()
                myConn.Dispose()
                Return Scope
        ...
        End Function

然后在edit.aspx代码隐藏中我有:

Public Class edit
    ...
    Public istGen = New Gen()
    ...
    Public iScopes As Integer
    Public Scope(iScopes) As StructElements
    ...
    
    Private Sub edit_Init(sender As Object, e As EventArgs) Handles Me.Init
      ...
      iScopes = istGen.CountElements("Scopes") - 1
      ReDim Scope(iScopes)
      Scope = istGen.FillElements("Scopes", iScopes)
      ...
    End Sub

End Class

这是我得到的错误: “Gen.StructElements()”类型的值无法转换为“Gen.StructElements”。

我发现问题出在 FillElements 函数的“返回范围”上,因为它期望输出一个 StructElements 而不是一个 StructElements 数组(这就是 Scope 变量)。我应该如何更改我的代码以使函数输出成为 StructElements 数组?

我试图在网上寻找答案,但没有找到太多。有人建议使用列表而不是数组,但这会要求对我的代码和项目进行大量翻新,所以如果有一种简单的方法可以做到这一点,我会非常喜欢它。

预先感谢您的支持。问候。

标签: asp.netarraysvb.netfunctionstructure

解决方案


推荐阅读