在下面的代码片段中,我试图提取包含在形成代词键的嵌套元组中的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