in f# match statement how do I match to the type byte[]?

点点圈 提交于 2019-12-28 22:44:54

问题


I'm trying to lookup DbType enumeration values from .net types. I'm using a match statement. However I cannot figure out how to match on the type byte[].

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

If there is a better way to map these types, I would be open to suggestions.


回答1:


byte[], byte array, and array<byte> are all synonymous, but in this context only the last will work without parentheses:

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


来源:https://stackoverflow.com/questions/5984949/in-f-match-statement-how-do-i-match-to-the-type-byte

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!