##Visual Basicでインクリメントを使用する場面
Visual BasicでプログラミングをしているとC#でいうインクリメント(i++)を使用したい場合がある。例えば配列をクラスに変換したい場合、Enumを定義するほどでもないが保守性は高くしたい場合がある。
他の場面でも使用したくなることはもちろんあるが、一例としてあげておく。
##サンプルコード
Public Function CreateDto(values() As String) As Dto
Dim dto = New Dto()
dto.Code = values(0)
dto.Name = values(1)
dto.Remarks = values(2)
Return dto
End Function
Public Class Dto
Public Property Code As String
Public Property Name As String
Public Property Remarks As String
End Class
##インクリメント使用後
拡張メソッドとしてppを定義した。処理を実行してからインクリメントするようになっている。
// 拡張メソッドをImportsして使用する。
Public Function CreateDto(values() As String) As Dto
Dim i As Integer = 0
Dim dto = New Dto()
dto.Code = values(i.pp)
dto.Name = values(i.pp)
dto.Remarks = values(i.pp)
Return dto
End Function
Public Class Dto
Public Property Code As String
Public Property Name As String
Public Property Remarks As String
End Class
// 拡張メソッドとして別モジュールで定義
Module ExtensionDefine
<Extension()>
Public Function pp(ByRef index As Integer) As Integer
Dim org = index
index += 1
Return org
End Function
End Module
##まとめ
ハードコードよりは読みにくいが保守性は上がる。例えば、Codeの上にIDが入るようにしただけで、修正前は全てのインデックスを修正しなければならい。インクリメント使用後は既存コードの修正が不要で、代入文を一つ足すだけでよい。
尚、拡張メソッドが使用できる前提のため、.Net 3.5以前のバージョンでは使用できない。
##注意事項
この記事で主題としているのは、インクリメントもどきがVisual Basicでも使用できるという点のみである。