這是一個代碼示例:
Sub Main()
Dim t As (t1 As String, t2 As String)
t.t1 = "123"
t.t2 = "456"
TupleTest(t)
End Sub
' line below produces Constant Expression Required error for the default parameters
Sub TupleTest(Optional t As (t1 As String, t2 As String) = ("", ""))
End Sub
我也嘗試用 and 替換("", ""),(String.Empty, String.Empty)但(Nothing, Nothing)我得到了同樣的錯誤。
那么是否可以將命名元組作為可選引數?
PS這是.NET 4.6.1。
uj5u.com熱心網友回復:
用于Nothing初始化可選引數。這將評估為結構的默認值。然后,用于.Equals檢查引數的相等性:
Sub TupleTest(Optional t As (t1 As String, t2 As String) = Nothing)
If t.Equals((Nothing, Nothing)) Then
' Do something
End If
End Sub
請注意,這與許多現有的內置 .NET 結構相同。例如,Point, Size, Color,Rectangle等,但所有這些都有一個自參考的 Shared 屬性,它允許我們做這樣的事情:
Sub Test(Optional p As Point = Nothing)
If p = Point.Empty Then
' Do something
End If
End Sub
另一方面,ValueTuples 沒有Empty屬性, 也沒有實作相等運算子。這就是為什么我們必須使用略顯尷尬的.Equals((Nothing, Nothing)).
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/516285.html
標籤:。网VB.net元组
上一篇:檔案未在事件目標上退出
