asp.net - net介紹 - 使用我(VB.NET)的關鍵字是否需要?



(5)

Me關鍵字是可選的,您可以選擇完全限定名稱空間,即使您已經將其導入到類的頂部。

但是,如果您具有與另一個導入的名稱空間中的另一個對象具有相同名稱的表單上的控件,它可能是至關重要的。

我目前正在開發一個Web應用程序(ASP.NET),其中包含的一些頁面是由其他程序員創建的,我注意到他們沒有使用“Me(VB.NET)”關鍵字來訪問控件,而在我身邊,我用它創造的每一頁。 為了提供進一步的信息,Web應用程序在.NET Framework 2.0上運行。 有誰會幫我理解是否需要使用我? 如果您使用Me,整個代碼有什麼優點和缺點? 它可以提高應用程序的性能嗎?

任何幫助,高度讚賞。 提前致謝。


使用Me關鍵字不會影響性能。 這完全是一個風格問題。 如果您使用它,我認為它會提高您的代碼的清晰度。 所以你乍一看就知道所使用的成員屬於對象本身,並不是一個局部變量。

Me關鍵字在我們希望我們的代碼引用當前對象內的成員(方法,屬性,...)時使用。 Me關鍵字與C ++和C#語言中的this關鍵字類似。 Me關鍵字通常是可選的 ,因為任何方法調用被假定為引用當前對象,除非另外明確指出。

例外是當你使用陰影變量 。 陰影變量是過程級別的一個變量,與該變量的類名稱相同。 例如:

Public Class ExampleClass

  Private FirstName As String

  Public Sub ExampleMethod()
    Dim FirstName As String
    FirstName = "Stefan"
  End Sub

End Class

變量FirstName在類級別和ExampleMethod方法內聲明。 在ExampleMethod中,除非我們使用Me關鍵字明確引用類級變量,否則只使用本地變量或陰影變量。

Public Class ExampleClass

  Private FirstName As String

  Public Sub ExampleMethod()
    Dim FirstName As String
    FirstName = "Stefan"
    Me.FirstName = "Carl Gustav"
  End Sub

End Class

據我所知,這是純粹的偏好,但可以消除屬性和局部範圍的變量/參數之間的歧義。 有些人因為習慣而虔誠地包含它。 這樣,如果他們然後引入一個同名的局部變量,什麼都不會中斷。

假設你有一個方法定義了DoSomething(MyString As String) ,並且該類也有一個名為MyStringString 。 引用MyString版本的唯一方法是使用Me.MyString 。 因此,你說Me.MyString = MyString ,編譯器知道你想要什麼。


我認為對於UI控件來說,它是非常多用戶的偏好。

但是我更喜歡使用“我”,特別是如果您使用類屬性,以防在訪問該變量之前需要執行一些代碼。

Class Sample
       Private myString as String

       Public Property GetMyString As String
       Get
          ' Some code here which sets the string after reading value from the  database
       End Get
       Set
       End Set

       End Property        
End Class

在這種情況下,使用它有或沒有“我”關鍵字有區別。


那麼,即使它有東西,有這個ME關鍵字提供問題的事件

例如,如果你有一個表單,你可以從其他表單中調用它

Dim myform as new frmXXX

myform.PrimaryKey=123

muform.show

除非Show方法完成,否則主鍵方法中的對像沒有引用ME關鍵字,並且提供了一個錯誤。

在PrimaryKey方法屬性writeonly主鍵集....

me.txtPrimaryKey.text="value"

將提供一個錯誤,除非表格未顯示。





vb.net