Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
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.