簡體   English   中英

VB.Net為什么需要顯式聲明我的字典才能使用select?

[英]VB.Net Why does my dictionary need to be explicitly declared in order to use select?

在MVC5中使用VB.Net。

我有一本字典:

Dim Filter as New Dictionary(Of String, Object)

' the key's value is another dictionary
Filter.Add("customParams", New Dictionary(Of String, String) From {{"k1","v1"}, {"k2","v2"}, {"k3","v3"}})

並且我正在嘗試將Filter(“ customParams”)值(它是Dictionary(字符串,字符串))轉換為定界字符串,“ k1 = v1,k2 = v2,k3 = v3”

這不起作用:

Dim kvString As String = String.Join(", ", Filter("customParams").Select(Function(x) x.Key & "=" + x.Value).ToArray())

我得到這個例外:

找不到類型為'Dictionary(Of String,String)'的公共成員'Select'。

但是,如果我為Dictionary(Of String,String)顯式聲明一個新變量,並使用它代替Filter(“ customParams”),則可以使用:

Dim customParams As Dictionary(Of String, String) = Filter("customParams")
Dim kvString As String = String.Join(", ", customParams.Select(Function(x) x.Key & "=" + x.Value).ToArray())

為什么它不起作用呢? 異常本身說它正在使用Dictionary(Of String,String)

默認情況下,VB.Net允許后期綁定OPTION STRICT OFF )。 后期綁定等效於C#中的dynamic ,這意味着運行時按名稱查找要調用的方法,並且編譯器不進行類型檢查或驗證。 后期綁定只能訪問公共成員 ,因此擴展(朋友)方法(例如“ Select不可用。 這對於VB.Net中的object變量是自動的。 customParams具有(非object )分配的類型,因此使用早期綁定。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM