【发布时间】:2010-03-12 11:50:27
【问题描述】:
我从第 3 方 API 获取数据,该 API 只返回一个 System.Object,我知道它是一个双重 []。为了处理这种返回类型,我发现下面的代码可以很好地工作。但是,我还得到了一些也伪装成 System.Object 的 int[] 数组,特别是 YYYYMMDD 格式的日期(例如 20100310)。
转换为浮点数失败,它只是说指定的强制转换无效。有没有人知道如何使它适用于整数?
let oIsNull (obj : System.Object) = obj = null
let oIsArray (obj : System.Object) = obj.GetType().IsArray
let o2f (obj : System.Object) =
let mutable arr = [|Double.NaN|]
if (oIsNull obj = false) && (oIsArray obj = true) then
let objArr = obj :?> obj[]
let u = objArr.GetUpperBound(0)
let floatArr : float[] = Array.zeroCreate (u + 1);
for i in 0..u do
if objArr.[i] = null then
floatArr.[i] <- Double.NaN
else
let t = objArr.[i].GetType()
floatArr.[i] <- objArr.[i] :?> float
//else floatArr.[i] <- float objArr.[i]
arr <- floatArr
arr
【问题讨论】:
标签: f#