2017-09-05 5 views
1

私はvb.netを初めて使い、foreachで2つの値を返したいと思いますか?その必要性に合うことができるオブジェクトのトンがあり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、or、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 

がビューいない大きな違いのパフォーマンスの観点から、これより可読性に基づいて意思決定を行うことができます

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 

ValueTuple Tuples as method return valuesという名前を返すことができ

メンテナンス性。

複数の場所で同じ戻り値の型を使用する場合や、別の関数に渡す場合は、クラスを優先する方法があります。

+0

exempleですべての可能性を編集していましたが、これはもう一方の論理よりも論理的です。 –

関連する問題