在下面的代碼片段中,我試圖提取包含在形成代詞鍵的嵌套元組中的recid。 嵌套元組格式(的Int32,(布爾,布爾)) -演員/轉換問題
我要尋找的項目的Int32的值(這是 實際上是一個數據庫記錄行ID)。
在下面的匹配代碼中,我試圖將recid添加到列表中,但首先我將對象轉換爲整數。
但是,這會產生以下錯誤 - 不知道爲什麼?
錯誤: 從類型此運行時脅迫或類型的測試「一個爲int32
涉及基於之前該程序點信息的不確定的類型。 某些類型不允許運行時類型測試。需要進一步的類型註釋。 這裏被引用的字典定義爲:
// Create Dict
let rdict = new Dictionary<_,_>()
// Add elements
rdict.Add((x.["PatientID"],(true,true)),ldiff)
// Extract Dict items
let reclist = new ResizeArray<int32>()
for KeyValue(k,v) in rdict do
match k with
| ((recid,(true,true)) ->
printfn "Found a matching Record: %A " recid; // <- prints correct result
let n = (recid:?> int32) // <- coercion error
reclist.Add(n)
線'rdict.Add((X [ 「PatientID」],(真,真))'具有開閉括號的錯配數。哪些'Dictionary'的鍵和值類型?是'int *(bool * bool)'只能用作鍵類型,還是'int'鍵類型和'bool * bool'的值類型?另外,x的實際類型是什麼? 「PatientID」]'?是否返回一個'int'或一個盒裝的'int'(即'obj'可以被轉換爲'int')? – ildjarn 2011-04-12 23:18:28
糟糕 - 我在發佈rdict.add行時瘋狂 - 現在更正了(我實際上是/構建了一個行/列對作爲字典值的列表,dict鍵實際上是一個組合(rid,(boolean,boolean))值(布爾值定義rec是否存在於一對錶格)x。[「PatientID」]是一個從數據庫表中檢索到的(未裝箱的)int值。 – BrendanC 2011-04-12 23:29:27
實際上,一個m礦問題 - 如果你的伴隨「布爾」對是「真實的」,而不是任何其他組合,你是否打算只將ID從'rdict'複製到'reclist'? – ildjarn 2011-04-12 23:36:07