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

时间:2012-07-20 20:30:40

标签: vb.net coding-style standards 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()
使用结构中的

(Me):

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()

3 个答案:

答案 0 :(得分:5)

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

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

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

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

答案 1 :(得分:1)

决定只有你自己,所有方法都是可以接受的,但是......像ReSharper这样的工具建议你不要使用Me(VB)或this(C#)关键字来使你的代码更清晰,更小。< / p>

在我的情况下,我避免使用Me关键字,但正如我所说,决定只有你自己。

答案 2 :(得分:0)

如果您没有专门使用它,则暗示ME。正如汉斯所提到的,有时你必须使用它,因为ME的范围将被更接近的范围名称所覆盖。

和其他人一样,我不经常使用它,通常当我不记得我称之为控制时我刚刚在两分钟前添加了...然后我再次把它拿出来只是因为我不在乎语法LOL 。我本来希望&#34;这个&#34;而不是我。