簡體   English   中英

Vb.Net 分配給元組

[英]Vb.Net assignment to a Tuple

VB 是否支持對元組的賦值? 如果是這樣,語法是什么?

Private Function GetPeStream(metadataDiagnostics As DiagnosticBag, peStreamProvider As EmitStreamProvider, metadataOnly As Boolean) As (peStream As Stream, signingStream As Stream, selectedStream As Stream)
    Return ...
End Function

Dim ret As Stream
Dim peStream as Stream
Dim signingInputStream as Stream
(peStream, signingInputStream, ret) = GetPeStream(metadataDiagnostics, peStreamProvider, metadataOnly)

您可以使用以下元組語法在單行中進行初始化和分配。

Dim x As Tuple(Of Stream, Stream, Stream)= New Tuple(of Stream,Stream,Stream)(str1,str2,str3)

重要提示:在上面的直接賦值之前,確保你已經實例化了str1str2str3並賦值給了值

您可以使用下面的示例避免使用 Item1、Item2 等。

Private Function GetPeStream(metadataDiagnostics As DiagnosticBag, peStreamProvider As EmitStreamProvider, metadataOnly As Boolean) As (peStream As Stream, signingStream As Stream, selectedStream As Stream)
    
    .....
    Return (processed_peStream, processed_signingStream,processed_selectedStream)
End Function


Private Function ConsumingGetPeStream()...

    'Calling the function
    Dim Your_Result_From_GetPeStream = GetPeStream(metadataDiagnostics_value, peStreamProvider_value, metadataOnly_Value)
    
    'Using returned values from function    
    Your_Result_From_GetPeStream.peStream
    Your_Result_From_GetPeStream.signingStream
    Your_Result_From_GetPeStream.selectedStream
    

End Function

一個更簡單的版本,以便更好地理解

      Public Sub Main()

                Dim ReturnFunctionWithTuple = FunctionWithTuple()

                Console.WriteLine($"Your long: {ReturnFunctionWithTuple.YourFieldLong}")
                Console.WriteLine($"Your date: {ReturnFunctionWithTuple.YourFieldDate}")
                Console.WriteLine($"Your bool: {ReturnFunctionWithTuple.YourFiedBoolean}")


            End Sub

            Public Function FunctionWithTuple() As (YourFieldLong As Long, YourFieldDate As Date, YourFiedBoolean As Boolean)

                Return (55, #01/01/2021#, False)

            End Function

使用泛型語法聲明元組變量和函數返回類型,以便類型對齊。 例如:

Public Sub GetTuple()
    Dim x As Tuple(Of String, String, Integer)
    x = GetData()
End Sub

Public Function GetData() As Tuple(Of String, String, Integer)

    Dim y = New Tuple(Of String, String, Integer)("A", "B", 27)
    Return y

End Function

為了做到這一點,您必須創建一個新的元組,它接受 PKing 所示的賦值,然后一次手動復制每個變量。

Dim x As Tuple(Of Stream, Stream, Stream)
x = GetData()
Dim eStream  as Stream = x.Item1
Dim signingInputStream as Stream = x.Item2
Dim Ret as Stream = x.Item3

當然,分配將處於循環中並且具有處理類型的代碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM