Sınıflardaki let Bağlamaları

Sınıf tanımındaki bağlamaları kullanarak let F# sınıfları için özel alanlar ve özel işlevler tanımlayabilirsiniz.

Sözdizimi

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

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

Açıklamalar

Önceki söz dizimi, sınıf başlığı ve devralma bildirimlerinden sonra ancak üye tanımlarından önce görünür. Söz dizimi, sınıfların let dışındaki bağlamalara benzer, ancak bir sınıfta tanımlanan adların sınıfıyla sınırlı bir kapsamı vardır. Bağlama let , verileri veya işlevleri genel kullanıma açmak, bir özellik veya üye yöntemi bildirmek için özel bir alan veya işlev oluşturur.

let Statik olmayan bağlamaya örnek let bağlaması adı verilir. Nesneler oluşturulduğunda örnek let bağlamaları yürütülür. Statik let bağlamalar, türü ilk kez kullanılmadan önce yürütülmesi garanti edilen sınıfı için statik başlatıcının bir parçasıdır.

Örnek let bağlamaları içindeki kod, birincil oluşturucunun parametrelerini kullanabilir.

Sınıflardaki bağlamalarda özniteliklere ve erişilebilirlik değiştiricilerine izin verilmez let .

Aşağıdaki kod örnekleri, sınıflardaki çeşitli bağlama türlerini let gösterir.

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)

Çıktı aşağıdaki gibidir:

10 52 1 204

Alan Oluşturmanın Alternatif Yolları

Özel alan oluşturmak için anahtar sözcüğünü val de kullanabilirsiniz. anahtar sözcüğü kullanılırken val , nesne oluşturulduğunda alana bir değer verilmez, bunun yerine varsayılan değerle başlatılır. Daha fazla bilgi için bkz . Açık Alanlar: Val Anahtar Sözcüğü.

Ayrıca bir üye tanımı kullanarak ve anahtar sözcüğünü private tanıma ekleyerek bir sınıfta özel alanlar tanımlayabilirsiniz. Kodunuzu yeniden yazmadan bir üyenin erişilebilirliğini değiştirmeyi bekliyorsanız bu yararlı olabilir. Daha fazla bilgi için bkz. Erişim Denetimi.

Ayrıca bkz.