2

我正在寻找是否有在 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()

(我)在使用结构中:

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

在一种情况下,当变量名不明确时,您必须使用它来帮助编译器:

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

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

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

于 2012-07-20T21:19:29.867 回答
1

决定权在您手中,所有方法都可以接受,但是... ReSharper 等一些工具建议您不要使用 Me (VB) 或 this (C#) 关键字,以使您的代码更清晰、更小。

就我而言,我避免使用 Me 关键字,但正如我所说,决定权在你。

于 2012-07-20T21:09:04.227 回答
0

如果您没有特别使用它,则 ME 是隐含的。正如 Hans 所提到的,有时您必须使用它,因为 ME 的范围将被范围更近的名称覆盖。

像其他人一样,我很少使用它,通常当我不记得我所谓的一些控制时,我刚刚在两分钟前添加了......然后我又把它拿出来只是因为我不关心语法 LOL。我会更喜欢“这个”而不是我。

于 2017-02-07T17:00:11.390 回答