在VB.Net中使用Me关键字的标准

Ema*_*een 2 vb.net standards coding-style keyword

我想找出在VB.Net语法中使用(Me)关键字的标准或首选方法.

目前我知道3种使用方法(Me).

没有(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()
Run Code Online (Sandbox Code Playgroud)

(Me)在Using结构中:

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
Run Code Online (Sandbox Code Playgroud)

在每个控件上使用(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()
Run Code Online (Sandbox Code Playgroud)

Han*_*ant 5

有一种情况你必须使用它,以便在变量名不明确时帮助编译器:

Sub Foo(ByVal bar As Integer)
    Me.Bar = bar
End Sub
Run Code Online (Sandbox Code Playgroud)

它从具有相同名称的参数中分配类中的字段.没有Me.它就会将参数值赋给自己,它会编译但不会是预期的.在vb.net中并不罕见,因为它不区分大小写.否则建议,考虑与字段名称不同的参数标识符名称会很痛苦.一些程序员(和工具)总是倾向于给字段名称一个前导下划线以避免这个问题.

但是你在问题中提出的那些是个人品味的问题.前缀有两个好处Me.,它有助于代码可读性,因为它表示范围并缩小读者必须查找声明的位置.它确实有助于IntelliSense弹出窗口缩小候选列表,我个人非常关心的功能.它是由你决定.