[英]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)
重要提示:在上面的直接赋值之前,确保你已经实例化了str1
、 str2
和str3
并赋值给了值
您可以使用下面的示例避免使用 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.