Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Вы можете определить частные поля и частные функции для классов F# с помощью let привязок в определении класса.
Синтаксис
// Field.
[static] let [ mutable ] binding1 [ and ... binding-n ]
// Function.
[static] let [ rec ] binding1 [ and ... binding-n ]
Замечания
Предыдущий синтаксис отображается после объявлений заголовка класса и наследования, но перед любыми определениями элементов. Синтаксис похож на let привязки вне классов, но имена, определенные в классе, имеют область, ограниченную классом. Привязка let создает частное поле или функцию, чтобы предоставлять данные или функции публично, объявлять свойство или метод-член.
Привязка let , которая не является статической, называется привязкой экземпляра let . Привязки экземпляров let выполняются при создании объектов. Статические let привязки являются частью статического инициализатора для класса, который гарантированно выполняется до первого использования типа.
Код в привязках экземпляра let может использовать параметры первичного конструктора.
Атрибуты и модификаторы специальных возможностей не допускаются для let привязок в классах.
В следующих примерах кода показано несколько типов let привязок в классах.
type PointWithCounter(a: int, b: int) =
// A variable i.
let mutable i = 0
// A let binding that uses a pattern.
let (x, y) = (a, b)
// A private function binding.
let privateFunction x y = x * x + 2 * y
// A static let binding.
static let mutable count = 0
// A do binding.
do count <- count + 1
member this.Prop1 = x
member this.Prop2 = y
member this.CreatedCount = count
member this.FunctionValue = privateFunction x y
let point1 = PointWithCounter(10, 52)
printfn "%d %d %d %d" (point1.Prop1) (point1.Prop2) (point1.CreatedCount) (point1.FunctionValue)
Выходные данные выглядят следующим образом.
10 52 1 204
Альтернативные способы создания полей
Вы также можете использовать ключевое val слово для создания частного поля. При использовании ключевого val слова поле не получает значение при создании объекта, но вместо этого инициализируется со значением по умолчанию. Дополнительные сведения см. в разделе "Явные поля: ключевое слово val".
Вы также можете определить частные поля в классе с помощью определения члена и добавления ключевого слова private в определение. Это может быть полезно, если вы ожидаете изменить специальные возможности члена без перезаписи кода. Для получения дополнительной информации см. управление доступом.