1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Visual Basic でC#のインクリメントを使用する。

Last updated at Posted at 2017-06-25

##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でも使用できるという点のみである。

目次

1
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?