2017-09-05 2 views
1

나는 vb.net을 처음 사용하기 때문에 foreach에서 두 개의 값을 반환하고 싶습니다. 도와 주실 수 있습니까? 그 필요에 맞게 수있는 객체의 톤이있다vb.net foreach에서 2 개의 값 반환하기

For Each item In Function() 
         test1 = I would like to get the result1 here 
         test2 = I would like to get the result2 here 
     Next 

Private Function Function() As String 
     Dim result1 As String 
     Dim result2 As String 

     result1 = "Test" 
     result2 = "Test2" 

     Return result1 

End Function 
+3

[튜플] (https://msdn.microsoft.com/en-us/library/dd268536(v=vs.110) .aspx)을 찾으십니까? –

+0

KeyValuePair가 또 다른 솔루션입니다. 또는 (String의) 배열. 또는 (String의) 또는, or, 또는 ... – muffi

답변

1

..

  • Tuple 당신이 찾고있는 것은 무엇듯한 :

    Return New Tuple(Of String, Of String)(result1 , result2) 
    

그러나 다른 배열, 사용자 정의 클래스, KeyValuePair, ValueTuple 같은 솔루션

1

함수 사용 방법에 따라 다릅니다.

님 당신은 가독성에 결정을 기반으로 더 만들고이 볼 수없는 큰 차이의 성능 관점에서 자신의 클래스

Public Class Values 
    Public Property One As String 
    Public Property Two As String 
End Class 

Private Function Get() As Values 
    Return New Values With { .One = "one", .Two = "two" } 
End Function 

Dim values = Get() 
value.One ' one 
value.Two 'two 

의 인스턴스를 반환, 그래서 할 수 ValueTuple Tuples as method return values

Private Function Get() As (One As String, Two As String) 
    Return (One:= "one", Two:= "two") 
End Function 

Dim values = Get() 
value.One ' one 
value.Two 'two 

이름 반환 할 수 있습니다 유지 보수성.

클래스는 여러 곳에서 동일한 반환 유형을 사용하거나 다른 함수로 전달하려는 경우에 선호되는 방식입니다.

+0

예제를 사용하여 모든 가능성을 편집했지만이 것은 다른 것보다 더 논리적입니다. –