我正在努力實現一個monad可能 - 我在本例中稱爲可空。可空嵌套對象和Maybe可能Monad
可空類是這樣實現的:
Public NotInheritable Class Nullable(Of TClass)
Private _value As TClass
Private _hasValue As Boolean
Public Shared Function Create(ByVal value As TClass) As Nullable(Of TClass)
Return New Nullable(Of TClass)(value)
End Function
Public Shared Function Create() As Nullable(Of TClass)
Return New Nullable(Of TClass)()
End Function
Private Sub New()
HasValue = False
End Sub
Private Sub New(theValue As TClass)
Value = theValue
HasValue = True
End Sub
Public Property Value() As TClass
Get
Return _value
End Get
Private Set(value As TClass)
_value = value
End Set
End Property
Public Property HasValue() As Boolean
Get
Return _hasValue
End Get
Private Set(value As Boolean)
_hasValue = value
End Set
End Property
End Class
有作爲
Class Parent
Public Property ChildClass as Nullable(Of Child)
End Class
和一個子類實施一個父類是簡單地
Class Child
Public Property ID as String
... other properties below ...
End Class
方式的單子是在我需要發佈以下內容訪問ne上的一個屬性時執行的STED子類
dim id = MyParentClass.ChildClass.Value.ID
但最好想我能夠做的就是有下面的語句
dim id = MyParentClass.ChildClass.Id
如果ChildClass爲null,則只是返回默認值屬性類型。
我試着實現這個使用默認屬性,並通過屬性設置值爲默認值,但它不會編譯。
這是可能的,或者有更好的方法來設計它 - 或者我可能沒有得到可能的monad?
很多的TIA
西蒙
+1非常感謝您的回覆。西蒙 –