2011-10-13 24 views
3

當我將函數轉換爲PageMethods時,我得到「我只在一個實例方法中有效」錯誤。VB.net「'我'只在一個實例方法內有效」PageMethods

Private Shared objDT As System.Data.DataTable 
Private Shared objDR As System.Data.DataRow 

<WebMethod()> Public Shared Function addstn(itemID As String) As String 
    For Each Me.objDR In objDT.Rows 
      If objDR("ProductID") = ProductID Then 
       If objDR("Options") = desc Then 
        objDR("Quantity") += 1 
        blnMatch = True 
        Exit For 
       End If 
      End If 
    Next 

End Function 

如果我刪除我,我會得到不同的錯誤。 我在網上某處得到了這個購物車腳本,我不知道用什麼替換「Me.objDR」。

預先感謝您

+1

那麼,在實例方法中* * * * * * * * * * – 2011-10-13 22:55:32

+0

@ user166390直觀上,在語言的不同實現中,實例中的「Me.Foo」將是「Instance.Foo」,而共享中的「Me.Foo」將是「Class.Foo」。在'Shared()'中使用非共享'Foo'調用'Me.Foo'會導致編譯器錯誤。 – EKW

回答

2

Me關鍵字提供了一種方法來引用代碼當前正在執行的類或結構的特定實例。

在共享上下文中沒有實例。您可以直接或通過ClassName.VariableName引用您的變量。

這可能是工作(我不知道從那其他變量):

For Each objDR In objDT.Rows 
     If ProductID.Equals(objDR("ProductID")) _ 
      AndAlso desc.Equals(objDR("Options"))Then 
       Dim q = CInt(objDR("Quantity")) 
       objDR("Quantity") = q + 1 
       blnMatch = True 
       Exit For 
     End If 
Next 

http://msdn.microsoft.com/en-us/library/20fy88e0%28v=vs.80%29.aspx

0

Me不能使用,因爲它的一個共享的方法,共享方法不通過一個實例進行訪問。

您收到的其他錯誤是什麼?

0

公共共享功能addstn(...

「共享」意味着它不是實例方法,如果你想使用「我」,你不能使用「共享」。使用類/模塊。

相關問題