【问题标题】:Returning multiple values from a function call从函数调用返回多个值
【发布时间】:2010-04-01 08:29:50
【问题描述】:

我有一个活动目录搜索功能:

    Function GetAdInfo(ByVal ADDN As String, ByVal ADCommonName As String, ByVal ADGivenName As String, ByVal ADStaffNum As String, ByVal ADEmail As String, ByVal ADDescription As String, ByVal ADTelephone As String, ByVal ADOffice As String, ByVal ADEmployeeID As String) As String
        Dim netBIOSname As String = Me.Request.LogonUserIdentity.Name
        Dim sAMAccountName As String = netBIOSname.Substring(netBIOSname.LastIndexOf("\"c) + 1)
        Dim defaultNamingContext As String
        Using rootDSE As DirectoryServices.DirectoryEntry = New DirectoryServices.DirectoryEntry("LDAP://RootDSE")
            defaultNamingContext = rootDSE.Properties("defaultNamingContext").Value.ToString()
        End Using
        Using searchRoot As DirectoryServices.DirectoryEntry = _
                            New DirectoryServices.DirectoryEntry("LDAP://" + defaultNamingContext, _
                                "kingkong", "kingkong", DirectoryServices.AuthenticationTypes.Secure)
            Using ds As DirectoryServices.DirectorySearcher = New DirectoryServices.DirectorySearcher(searchRoot)
                ds.Filter = String.Format("(&(objectClass=user)(objectCategory=person)(sAMAccountName={0}))", sAMAccountName)
                Dim sr As DirectoryServices.SearchResult = ds.FindOne()

                ADDN = (sr.Properties("displayName")(0).ToString())
                ADCommonName = (sr.Properties("cn")(0).ToString())
                ADGivenName = (sr.Properties("givenname")(0).ToString())
                ADStaffNum = (sr.Properties("sn")(0).ToString())
                ADEmail = (sr.Properties("mail")(0).ToString())
                ADDescription = (sr.Properties("description")(0).ToString())
                ADTelephone = (sr.Properties("telephonenumber")(0).ToString())
                ADOffice = (sr.Properties("physicalDeliveryOfficeName")(0).ToString())

            End Using
        End Using
        Return ADDN
        Return ADCommonName
        Return ADGivenName
        Return ADStaffNum
        Return ADEmail
        Return ADDescription
        Return ADTelephone
        Return ADOffice

该函数似乎可以工作,因为当我在末尾设置断点时,ADDN 等变量确实具有正确的值。

然后我在 page_load 中这样调用函数:

GetAdInfo(ADDN, ADCommonName, ADGivenName, ADStaffnum, ADEmail, ADDescription, ADTelephone, ADOffice, ADEmployeeID)

然后我尝试响应。写出其中一个要测试的变量:

Response.Write(ADDN) 

但是值是空的。

请有人告诉我我做错了什么。谢谢

【问题讨论】:

    标签: asp.net vb.net function syntax


    【解决方案1】:

    你只能从一个函数返回一个值——你可以通过引用传递这些值,它们应该返回正确的值,但对我来说,我认为你最好创建一个带有你需要的属性的小类返回,并从此方法返回该类的实例,填充返回的变量 - 这意味着如果您必须添加更多返回值,更改此方法的问题会更少。

    【讨论】:

    • 当您说通过引用传递它们时,您的意思是这样的: ADGivenName = (sr.Properties("givenname")(0).ToString()) 并删除所有 Return 的?跨度>
    • 我的意思是将 byval 更改为 byref,尽管我真的不建议将其作为解决方案。
    猜你喜欢
    • 1970-01-01
    • 2018-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-17
    相关资源
    最近更新 更多