我正在尝试从一个函数返回3个值

问题描述 投票:0回答:1

我不知道这是否可行,但是我的程序中有4或5次这样的代码,但是具有不同的DOhav ***变量。我试图将其压缩为1个函数,并带有一个普通的DOhavART,DOhavART2,DOhavART3变量以覆盖这些变量。我将需要完成功能的值传递给它。但是我只能得到1个变量作为回报。我在网上搜索过各种尝试,例如使用数组函数或从3中构建结构或构建大字符串,并在返回时将其拆分,但这些方法无法使用。它的工作方式是查看一组文件夹,看其中是否包含与系统(sysSELsh),游戏(RnameSH)和它们的图像类型(ArtTYPE)相匹配的正确图像。

For Each foundDirectory In My.Computer.FileSystem.GetDirectories((lbPath & "\Images\" & Mid(sysSELsh, 1, Len(sysSELsh) - 4) & "\Box - Front\"))

最后,它应该具有3个具有完整路径的文件(返回),但是返回时我无法检索3个变量,当它返回时,它检查是否存在3个文件,然后将其添加到是或否的列表框。必须有3个返回值,因为这就是文件可以命名或结构化的不同方式。我在5个不同的代码部分中使用它,但是具有单独的变量,并且代码中的其他所有内容都相同。实际上有20个文件夹可以搜索所有不同类型的图像,因此将其压缩为一个函数是我的主要目标。

Public Function FINDArtTYPE(ByVal sysSELsh As String, ByVal RnameSH As String, ByVal ArtTYPE As String) As String

    Dim extFIND = RnameSH.Substring(RnameSH.LastIndexOf(".") + 1)
    Dim RepSTR As String = ""
    Dim DOhavART As String = ""
    Dim DOhavART2 As String = ""
    Dim DOhavART3 As String = ""

    If Len(extFIND) = 2 Then

        DOhavART = lbPath & "\Images\" & Mid(sysSELsh, 1, Len(sysSELsh) - 4) & ArtTYPE & Mid(RnameSH, 1, Len(RnameSH) - 3) & ".PNG"

    ElseIf Len(extFIND) = 3 Then

        DOhavART = lbPath & "\Images\" & Mid(sysSELsh, 1, Len(sysSELsh) - 4) & ArtTYPE & Mid(RnameSH, 1, Len(RnameSH) - 4) & ".PNG"

    End If

    If FileExists(DOhavART) = False Then

        DOhavART2 = lbPath & "\Images\" & Mid(sysSELsh, 1, Len(sysSELsh) - 4) & ArtTYPE & DBid & "-01.PNG"

        If InStr(3, DOhavART2, ":") <> 0 Then RepSTR = Replace(DOhavART2, ": ", "_ ") : If RepSTR <> "" Then DOhavART2 = RepSTR : RepSTR = ""
        If InStr(3, DOhavART2, "'") <> 0 Then RepSTR = Replace(DOhavART2, "'", "_") : If RepSTR <> "" Then DOhavART2 = RepSTR : RepSTR = ""
        If InStr(3, DOhavART2, "/") <> 0 Then RepSTR = Replace(DOhavART2, "/", "_") : If RepSTR <> "" Then DOhavART2 = RepSTR : RepSTR = ""
        If InStr(3, DOhavART2, " / ") <> 0 Then RepSTR = Replace(DOhavART2, " / ", " _ ") : If RepSTR <> "" Then DOhavART2 = RepSTR : RepSTR = ""

    End If

    If FileExists(DOhavART) = False And FileExists(DOhavART2) = False Then

        For Each foundDirectory In My.Computer.FileSystem.GetDirectories((lbPath & "\Images\" & Mid(sysSELsh, 1, Len(sysSELsh) - 4) & ArtTYPE))

            Dim FileCount As Integer = Directory.GetFiles(foundDirectory & "\").Length

            If FileCount > 0 Then

                If Len(extFIND) = 2 Then

                    DOhavART = foundDirectory & "\" & Mid(RnameSH, 1, Len(RnameSH) - 3) & ".PNG"

                    If FileExists(DOhavART) = True Then DOhavART3 = DOhavART

                ElseIf Len(extFIND) = 3 Then

                    DOhavART = foundDirectory & "\" & Mid(RnameSH, 1, Len(RnameSH) - 4) & ".PNG"

                    If FileExists(DOhavART) = True Then DOhavART3 = DOhavART

                End If

                If FileExists(DOhavART) = False And FileExists(DOhavART3) = False Then

                    DOhavART2 = (foundDirectory & "\" & DBid & "-01.PNG")

                    If InStr(3, DOhavART2, ":") <> 0 Then RepSTR = Replace(DOhavART2, ": ", "_ ") : If RepSTR <> "" Then DOhavART2 = RepSTR : RepSTR = ""
                    If InStr(3, DOhavART2, "'") <> 0 Then RepSTR = Replace(DOhavART2, "'", "_") : If RepSTR <> "" Then DOhavART2 = RepSTR : RepSTR = ""
                    If InStr(3, DOhavART2, "/") <> 0 Then RepSTR = Replace(DOhavART2, "/", "_") : If RepSTR <> "" Then DOhavART2 = RepSTR : RepSTR = ""
                    If InStr(3, DOhavART2, " / ") <> 0 Then RepSTR = Replace(DOhavART2, " / ", " _ ") : If RepSTR <> "" Then DOhavART2 = RepSTR : RepSTR = ""

                    If FileExists(DOhavART2) = True Then DOhavART3 = DOhavART2

                End If

            End If

        Next

    End If

    Return DOhavART
    Return DOhavART2
    Return DOhavART3

End Function

感谢您对此提供的任何帮助。

我不知道这是否可行,但是我的程序中有4或5次这样的代码,但是具有不同的DOhav ***变量。我正在尝试将其压缩为1个具有一般DOhavART,DOhavART2,...

vb.net function visual-studio-2017 return-value
1个回答
0
投票

仅返回List(Of String)

© www.soinside.com 2019 - 2024. All rights reserved.