в выражении f # match как мне соответствовать типу byte []? - PullRequest
7 голосов
/ 13 мая 2011

Я пытаюсь найти значения перечисления DbType в типах .net.Я использую заявление о совпадении.Однако я не могу понять, как сопоставлять байты типа [].

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

Если есть лучший способ сопоставления этих типов, я буду открыт для предложений.

1 Ответ

10 голосов
/ 13 мая 2011

byte[], byte array и array<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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...