如何为自定义类级联方法?
我正在处理的是一个使用日期的自定义类。
我把这个日期作为财产。然后我想根据相关的方法返回日期。例如:
InputDate.AdjustToFirst
因此,如果我输入5/15/2015,则上述内容将于2015年5月1日返回。
同样可以这样做:
InputDate.AdjustToFirst.ReduceOneYear
因此,如果输入5/15/2015,则返回将是5/1/2014。
另外
InputDate.ReduceOneYear
2015年5月15日将于5/15/2014返回。
我知道DateSerial,我只是想学习如何做到这一点。这个想法类似于VB variable.ToString
方法。
答案 0 :(得分:3)
你可以让函数简单地返回一个新对象(method chaining,正如Fred Wilson所提到的那样)。这是我称为MyDate
的一个小类的一个小例子:
Private m_date As Date
Public Sub Init(ByVal d As Date)
m_date = d
End Sub
Public Function ToString() As String
ToString = m_date
End Function
Public Function AddYear(y As Integer) As MyDate
Dim newDate As MyDate
Set newDate = New MyDate
newDate.Init (DateAdd("yyyy", y, m_date))
Set AddYear = newDate
End Function
Public Function AddMonth(m As Integer) As MyDate
Dim newDate As MyDate
Set newDate = New MyDate
newDate.Init (DateAdd("m", m, m_date))
Set AddMonth = newDate
End Function
现在,您可以使用AddYear
和AddMonth
作为链函数:
Dim d As MyDate
Set d = New MyDate
d.Init (Now)
MsgBox d.AddYear(2).AddMonth(4).ToString()