Yapılar (F#)
Bir yapısı miktarda veri ve basit davranışını olan türleri için bir sınıf daha verimli bir compact nesne türü.
[ attributes ] type [accessibility-modifier] type-name = struct type-definition-elements end // or [ attributes ] [<StructAttribute>] type [accessibility-modifier] type-name = type-definition-elements
Notlar
Yapıları burada değer türleri, doğrudan yığında veya, olarak kullanıldığında depolanan anlamına gelir alanları veya dizi öğelerini, üst satır içi yazın.Sınıfları ve kayıtları farklı olarak, yapıları geçişi değerli semantik vardır.Bu, öncelikle erişilen ve sık kopyalanan verilerin küçük Toplamalar için faydalı anlamına gelir.
Önceki sözdizimine iki form gösterilmektedir.İlk basit sözdizimi değildir, ancak kullandığınızda olduğundan, yine de sık kullanıldığı struct ve end atlamalısınız anahtar sözcükler, StructAttribute öznitelik, ikinci biçiminde görüntülenir.Kısaltma StructAttribute sadece için Struct.
type-definition-elements Önceki sözdizimine üye bildirimleri ve tanımları temsil eder.Yapıları Kurucular ve değişebilir ve sabit alanlarına sahip olabilir ve üyeleri ve arabirim uygulamaları bildirebilirsiniz.Daha fazla bilgi için bkz. Üyeler (F#).
Yapıları içinde devralma katılamaz, içeremez let veya do bağlamaları, ve (kendi türü başvuru başvuru hücreleri içerirler olsa da), kendi türü alanları yinelemeli olarak içeremez.
Yapıları izin için let bağlamaları, kullanarak yapıları alanları belirtmesi gerekir val anahtar sözcük.val Anahtar sözcük bir alan ve türünü tanımlar ancak başlatma izin vermiyor.Bunun yerine, val bildirimlerdir sıfıra başlatılmış veya null.Bu nedenle, gerektiren bir örtük (yani, hemen sonra yapısı adı bildiriminde belirtilen parametreleri) oluşturucuya sahip yapıları, val bildirimleri ile ek açıklama DefaultValue özniteliği.Tanımlanan bir oluşturucuya sahip yapıları sıfır başlatma yine de destekler.Bu nedenle, DefaultValue böyle bir sıfır değeri alan için geçerli bir bildirim bir özniteliktir.Örtük oluşturucular yapılarında gerçekleştirme tüm eylemler için let ve do bağlamaları türüne izin değil, ancak geçirilen örtük Oluşturucu parametre değerleri özel alanları olarak kullanılabilir.
Açık oluşturucular alan değerlerinin başlatma gerektirebilir.Açık bir kurucusu olan bir yapı gerektiğinde, sıfır başlatma yine de destekler; Ancak, kullanmamanız DefaultValue özniteliği val bildirimleri çünkü açık kurucu ile çakışıyor.Hakkında daha fazla bilgi için val bildirimleri, bakın Açık Alanlar: val Anahtar Sözcüğü (F#).
Öznitelikleri erişilebilirlik değiştiricileri yapıları izin verilir ve diğer türleri için aynı kurallara izleyin.Daha fazla bilgi için bkz. Öznitelikler (F#) ve Erişim Denetimi (F#).
Aşağıdaki kod örnekleri yapısı tanımları gösterilmektedir.
// In Point3D, three immutable values are defined.
// x, y, and z will be initialized to 0.0.
type Point3D =
struct
val x: float
val y: float
val z: float
end
// In Point2D, two immutable values are defined.
// Point2D has an explicit constructor.
// You can create zero-initialized instances of Point2D, or you can
// pass in arguments to initialize the values.
type Point2D =
struct
val X: float
val Y: float
new(x: float, y: float) = { X = x; Y = y }
end