Partilhar via


deixar Ligações em Classes

Você pode definir campos privados e funções privadas para classes F# usando let associações na definição de classe.

Sintaxe

// Field.
[static] let [ mutable ] binding1 [ and ... binding-n ]

// Function.
[static] let [ rec ] binding1 [ and ... binding-n ]

Observações

A sintaxe anterior aparece após o título da classe e as declarações de herança, mas antes de qualquer definição de membro. A sintaxe é como a de let ligações fora de classes, mas os nomes definidos em uma classe têm um escopo limitado à classe. Uma let associação cria um campo ou função privada, para expor dados ou funções publicamente, declarar uma propriedade ou um método membro.

Uma let associação que não é estática é chamada de vinculação de instância let . As associações de instância let são executadas quando os objetos são criados. As ligações estáticas let fazem parte do inicializador estático para a classe, que é garantido para executar antes que o tipo seja usado pela primeira vez.

O código dentro de associações de instância let pode usar os parâmetros do construtor primário.

Atributos e modificadores de acessibilidade não são permitidos em let associações em classes.

Os exemplos de código a seguir ilustram vários tipos de let associações em classes.

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)

A saída é a seguinte.

10 52 1 204

Formas alternativas de criar campos

Você também pode usar a val palavra-chave para criar um campo privado. Ao usar a val palavra-chave, o campo não recebe um valor quando o objeto é criado, mas é inicializado com um valor padrão. Para obter mais informações, consulte Campos explícitos: a palavra-chave val.

Você também pode definir campos privados em uma classe usando uma definição de membro e adicionando a palavra-chave private à definição. Isso pode ser útil se você espera alterar a acessibilidade de um membro sem reescrever seu código. Para obter mais informações, consulte Controle de acesso.

Consulte também