コンストラクタのオーバーロード。

R.Tanaka.Ichiro's Blog:コンストラクタとオーバーロード
興味深かったので。
まず、R・田中一郎さんのは引数の多いオーバーロードから引数の少ないオーバーロードを順次呼び出すパターン。


Public Class Sample


Private value1 As String
Private value2 As String
Private value3 As String


Public Sub New(ByVal arg1 As String, ByVal arg2 As String, ByVal arg3 As String)
Me.New(arg1, arg2)

Me.value3 = arg3

End Sub


Public Sub New(ByVal arg1 As String, ByVal arg2 As String)
Me.New(arg1)

Me.value2 = arg2

End Sub


Public Sub New(ByVal arg1 As String)
Me.New()

Me.value1 = arg1

End Sub


Public Sub New()

End Sub


End Class
で、コメント欄には逆の引数の少ないオーバーロードから引数の多いオーバーロードに向かって呼び出すパターンについても発言がありますね。

Public Class Sample


Private value1 As String
Private value2 As String
Private value3 As String


Public Sub New()

Me.New(Nothing)

End Sub


Public Sub New(ByVal arg1 As String)

Me.New(arg1, Nothing)

End Sub


Public Sub New(ByVal arg1 As String, ByVal arg2 As String)

Me.New(arg1, arg2, Nothing)

End Sub


Public Sub New(ByVal arg1 As String, ByVal arg2 As String, ByVal arg3 As String)

Me.value1 = arg1
Me.value2 = arg2
Me.value3 = arg3

End Sub


End Class
他にも一番引数の多いのを呼び出すとか、

Public Class Sample


Private value1 As String
Private value2 As String
Private value3 As String


Public Sub New()

Me.New(Nothing, Nothing, Nothing)

End Sub


Public Sub New(ByVal arg1 As String)

Me.New(arg1, Nothing, Nothing)

End Sub


Public Sub New(ByVal arg1 As String, ByVal arg2 As String)

Me.New(arg1, arg2, Nothing)

End Sub


Public Sub New(ByVal arg1 As String, ByVal arg2 As String, ByVal arg3 As String)

Me.value1 = arg1
Me.value2 = arg2
Me.value3 = arg3

End Sub


End Class
初期化のメソッド用意したりとか。

Public Class Sample


Private value1 As String
Private value2 As String
Private value3 As String


Public Sub New()

Me.New(Nothing)

End Sub


Public Sub New(ByVal arg1 As String)

Me.New(arg1, Nothing)

End Sub


Public Sub New(ByVal arg1 As String, ByVal arg2 As String)

Me.New(arg1, arg2, Nothing)

End Sub


Public Sub New(ByVal arg1 As String, ByVal arg2 As String, ByVal arg3 As String)

Initialize(arg1, arg2, arg3)

End Sub


Private Sub Initialize(ByVal arg1 As String, ByVal arg2 As String, ByVal arg3 As String)

Me.value1 = arg1
Me.value2 = arg2
Me.value3 = arg3

End Sub


End Class
長くなりましたが(コードも書くから。orz)、私は「引数の少ないオーバーロードから引数の多いオーバーロードに向かって呼び出すパターン」で書いています。初期化コードが散らばって欲しくないという理由からです(コメント欄にもありましたね)。
一般的かどうかはわかりませんが。