2012-07-20 21 views
1

我在查找是否有在VB.Net语法中使用(Me)关键字的标准或首选方式。在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() 

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

这是一个有趣的问题,但它不适合这个网站。所有这些选项都是有效且可接受的。这完全是一个偏好问题。我个人更喜欢第一种选择,但那只是我,我知道其他非常优秀的程序员会不同意。 – 2012-07-20 20:46:10

+0

第二个例子是否实际引用了ME? 您不要在控件前加点。 – 2017-02-07 16:54:16

回答

0

的决定只是你的,所有的方式都可以接受,但是......有些工具像ReSharper建议你不要使用Me(VB)或者这个(C#)关键字来使你的c颂歌更清晰,更小。

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

5

有一个情况下,你使用它,以帮助编译器在变量名称不明确:

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

从具有相同名称的参数在类分配领域。如果没有Me.,它会将自变量值赋给自身,但编译它本身并不是预期的。在vb.net中不常见,因为它不区分大小写。否则,推荐使用与字段名称不同的参数标识符名称可能会很痛苦。一些程序员(和工具)喜欢总是给字段名称一个下划线以避免这个问题。

但你在你的问题中提出的问题是个人品味问题。前缀Me.有两个好处,它有助于代码的可读性,因为它指示了范围,并缩小了读者查找声明的范围。这真的有助于智能感知弹出窗口缩小候选人名单,这是我个人非常关心的功能。它是由你决定。

+0

感谢您的建议。我会确保我不会在Using Me结构中编写代码。 – 2012-07-20 21:51:16

0

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

像其他人一样,我只用它很少,通常当我不记得我刚刚添加的两分钟前我称为某种控制的东西时...然后我再次拿出它,只是因为我不在乎语法LOL。我会更喜欢“这个”而不是我。