Свойство класса F # против явных полей - PullRequest
2 голосов
/ 19 мая 2011

Может кто-нибудь помочь мне с примером, когда явное поле необходимо в F #? например, как будут полезны следующие три класса

type MyClass =
    val a : int
    val b : int
    new(a0, b0) = { a = a0; b = b0; }

или

type MyClass() =
    [<DefaultValue>] val mutable a: int
    [<DefaultValue>] val mutable b: int
    member this.Setab( a0: int, b0: int) =
       a<- a0
       b<- b0

по сравнению с

type MyClass(a0:int,b0:int) =
    member x.a = a0
    member x.b = b0

Я могу понять только последний класс. спасибо.

РЕДАКТИРОВАТЬ: следующий вопрос является примером того, что необходимы первые два понятия: Порядок полей в типе для FileHelpers

1 Ответ

5 голосов
/ 19 мая 2011

Первые две формы имеют ограниченное использование, они полезны, если вам нужно быть очень понятным в отношении того, как поля в классе размечены.Например, вы можете передать тип неуправляемому коду, который ожидает определенное количество полей в определенном порядке или порядке, или вы можете передать его в API, который использует отражение над полями.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...