2011-12-31 143 views
-2

我有以下vb.net代碼和我得到的語法錯誤它Vb.net代碼語法錯誤

更新

Protected Sub OpenLogin_Click(ByVal src As Object, ByVal e As CommandEventArgs) 
     Dim StrUri As String = e.CommandArgument.ToString() 
     Dim openid As New OpenIdRelyingParty() 
     Dim b = New UriBuilder(Request.Url) 
     With Key 
      .Query = "" 
     End With 
     'var b = new UriBuilder(Request.Url) { Query = "" }; 

     Dim req = openid.CreateRequest(StrUri) 

     Dim fetchRequest = New FetchRequest() 
     fetchRequest.Attributes.AddRequired(WellKnownAttributes.Contact.Email) 
     fetchRequest.Attributes.AddRequired(WellKnownAttributes.Name.First) 
     fetchRequest.Attributes.AddRequired(WellKnownAttributes.Name.Last) 

     req.AddExtension(fetchRequest) 

     req.RedirectToProvider() 

    End Sub 

現在在代碼中的錯誤是「關鍵不是宣稱」我現在應該怎麼做

+0

刪除'鍵'保留字和'結束與'。兩者都不是必需的。 – lsuarez 2011-12-31 06:34:22

+0

我已經完成了{Query =「」}但現在錯誤是「With必須以匹配的結束標記結尾」 – 2011-12-31 06:37:34

+0

然後,您不需要將block分隔到新行或使用行連續字符「_」。 – lsuarez 2011-12-31 06:38:15

回答

0

兩個問題:

  1. Key保留字是唯一的識別用於使用Enumerable.GroupBy分組的多部分密鑰時使用。使用它們的構造函數設置對象屬性並不是必需的。

  2. 您所遇到的問題,讓你已經分居了With裝飾到一個新的生產線,這是語法不正確的,因爲你現在把它當作一個With塊,這意味着每個網點的訪問將針對可變緊隨With聲明。您需要使用續行符或將With在同一行作爲對象的構造函數:

例1

Dim b = New UriBuilder(Request.Url) With { 
      .Query = "" 
     } 

例2

Dim b = New UriBuilder(Request.Url) _ 
      With { .Query = "" } 

編輯:

您不能在Visual Studio 2005/.NET 2.0項目中使用此語法。只需構建對象然後初始化屬性:

Dim b As New UriBuilder(Request.Url) 
b.Query = "" 
+0

我用你的Ex1和Ex2,但它仍然給「錯誤的聲明是期待的」錯誤。現在做什麼? – 2011-12-31 06:47:11

+0

您使用的是什麼版本的Visual Studio和.NET庫? – lsuarez 2011-12-31 06:48:11

+0

我很確定內聯屬性初始化不受支持。只需構建你的對象並在下一行設置屬性。 – lsuarez 2011-12-31 06:56:03

0

AFAIK,你不需要大括號。

With Something 
    .Property1 = True 
    .Property2 = "Inactive" 
    ' And so on 
End With 

UPDATE

With Key 
    .Query = "" 
End With 

爲什麼你需要一個WITH子句在這裏呢?以上是語法上等同於

Key.Query = "" 
+0

請告訴根據我的代碼 – 2011-12-31 06:42:03

+0

我應該寫什麼用{Key .Query =「」} End With – 2011-12-31 06:43:28

+0

檢查我的更新。 – 2011-12-31 06:45:56

0

聲明Key變量或將其從代碼中移除。