在f#match语句中如何匹配byte []类型?

时间:2011-05-12 21:54:25

标签: ado.net f#

我正在尝试从.net类型中查找DbType枚举值。我正在使用匹配声明。但是我无法弄清楚如何匹配字节[]。

let dbType x =
  match x with
  | :? Int64 -> DbType.Int64
  | :? Byte[] -> DbType.Binary // this gives an error
  | _ -> DbType.Object

如果有更好的方法来映射这些类型,我会接受建议。

1 个答案:

答案 0 :(得分:10)

byte[]byte arrayarray<byte>都是同义词,但在此上下文中,只有最后一个没有括号才能生效:

let dbType (x:obj) =
    match x with
    | :? (byte[])     -> DbType.Binary
    | :? (byte array) -> DbType.Binary // equivalent to above
    | :? array<byte>  -> DbType.Binary // equivalent to above
    | :? int64        -> DbType.Int64
    | _               -> DbType.Object