2

VB.Net構文で(Me)キーワードを使用するための標準的な方法または推奨される方法があるかどうかを調べています。

現在、私は3つの使い方を知っています(私)。

(Me)キーワードなし:

Cursor = Cursors.WaitCursor

RadioButtonSortBySurname.Checked = True

LightGrid.SortColumn(2)
LightGrid.Columns(2).LastSortState = Ascending
LightGrid.SortColumn(1)
LightGrid.Columns(1).LastSortState = Ascending

Cursor = Cursors.Default

LightGrid.StatusRowText = ""
LightGrid.Select()

(私)使用構造:

Using Me
    Cursor = Cursors.WaitCursor

    RadioButtonSortBySurname.Checked = True

    LightGrid.SortColumn(2)
    LightGrid.Columns(2).LastSortState = Ascending
    LightGrid.SortColumn(1)
    LightGrid.Columns(1).LastSortState = Ascending

    Cursor = Cursors.Default

    LightGrid.StatusRowText = ""
    LightGrid.Select()
End Using

各コントロールで(Me)を使用する:

Cursor = Cursors.WaitCursor

Me.RadioButtonSortBySurname.Checked = True

Me.LightGrid.SortColumn(2)
Me.LightGrid.Columns(2).LastSortState = Ascending
Me.LightGrid.SortColumn(1)
Me.LightGrid.Columns(1).LastSortState = Ascending

Cursor = Cursors.Default

Me.LightGrid.StatusRowText = ""
Me.LightGrid.Select()
4

3 に答える 3

5

変数名があいまいな場合にコンパイラを支援するために、これを使用する必要ある場合が 1 つあります。

Sub Foo(ByVal bar As Integer)
    Me.Bar = bar
End Sub

同じ名前の引数からクラスのフィールドを割り当てます。それがなければMe.、引数値をそれ自体に割り当てます。これはコンパイルされますが、意図したものではありません。大文字と小文字が区別されないため、vb.net ではそれほど珍しくありません。それ以外の場合は、フィールド名とは異なる引数識別子名を考えるのが苦痛になる可能性があります。一部のプログラマ (およびツール) は、この問題を回避するために、常にフィールド名の先頭にアンダースコアを付けることを好みます。

しかし、あなたが質問で提示したものは、個人的な好みの問題です. プレフィックスMe.には 2 つの利点があります。スコープを示し、リーダーが宣言を探す必要がある場所を絞り込むため、コードの読みやすさに役立ちます。そして、IntelliSense ポップアップが候補のリストを絞り込むのに本当に役立ちます。これは、私が個人的に非常に気にかけている機能です。それはあなた次第です。

于 2012-07-20T21:19:29.867 に答える
1

決定はあなた次第です。すべての方法が受け入れられますが... ReSharper などの一部のツールでは、コードを読みやすく小さくするために Me (VB) または this (C#) キーワードを使用しないことをお勧めします。

私の場合、Me キーワードの使用は避けていますが、前述したように、決定はあなた次第です。

于 2012-07-20T21:09:04.227 に答える