Return 2 values in a foreach

0

I would like to return two values in a foreach , can you help me?

    For Each item In Funcao()
        teste1 = gostaria de pegar aqui o resultado 1
        teste2 = gostaria de pegar aqui o resultado 2
    Next

Private Function Funcao() As String
    Dim resultado1 As String
    Dim resultado2 As String

    resultado1 = "Teste"
    resultado2 = "Teste2"

    Return resultado1

End Function
    
asked by anonymous 04.09.2017 / 21:35

2 answers

1

I think this is what you want:

Private Function Funcao() As IEnumerable(Of String)
    Yield "Teste"
    Yield "Teste2"
End Function

Documentation .

    
04.09.2017 / 21:40
0

Returning two literal values to a single variable is impossible , but you can return a List<string> with two values and thus use them in your For Each block, enumerating the return of Funcao() :

Private Function Funcao() As String() ' Array enumerável
    Dim Retorno As New List(Of String)
    Dim resultado1 As String
    Dim resultado2 As String

    resultado1 = "Teste"
    resultado2 = "Teste2"

    Retorno.Add(resultado1)
    Retorno.Add(resultado2)

    ' Retorna a lista com os elementos resultado1 e resultado2
    Return Retorno.ToArray()
End Function

And to use:

Dim Resultados As String() = Funcao()
teste1 = Resultados(0) 'Teste'
teste2 = Resultados(1) 'Teste2'

If you want to list:

For Each item In Resultados
     teste1 = item(0) 'Teste'
     teste2 = item(1) 'Teste2'
Next
    
06.09.2017 / 08:43