Yapıları (F#)
A yapısı bir sınıf küçük miktarda veri ve basit davranış türleri için daha verimli bir kompakt nesne türüdü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 þunlardýr: deðer türleri, bunlar doðrudan yýðýnda ya 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ı geçişi değer semantiği yapılarına sahiptir. Bu, öncelikle küçük aggregates erişilen ve sık kopyalanan veri için yararlı oldukları anlamına gelir.
Önceki sözdiziminde iki gösterilir. İlk basit sözdizimi değildir, ancak kullandığınızda, çünkü yine de sıkça kullanıldığı struct ve end anahtar sözcükler ihmal StructAttribute ikinci formda görünür özniteliği. Kısaltabilirsiniz StructAttribute just için Struct.
type-definition-elements Üye bildirimleri ve tanımları önceki sözdiziminde gösterir. Üyeleri ve arabirim uygulamaları bildirebilirsiniz ve yapıları Kurucular ve kesilebilir ve sabit alanları olabilir. Daha fazla bilgi için bkz. Üyeler (F#).
Yapıları kalıtım alamaz, içeremez let veya do bağlar, ve (onlar kendi başvuru hücrelere başvurma içerebilse) özyinelemeli olarak kendi türündeki alanları içeremez.
Yapıları izin vermeyin çünkü let bağları, yapıları alanlarını kullanarak bildirmelisiniz val anahtar sözcüğü. val Anahtar sözcüğünü bir alan ve türünü tanımlar, ancak başlatma izin vermez. Bunun yerine, val bildirimleri başlatılan sıfır ya da boş. Bu nedenle, (diğer bir deyişle, hemen sonra bildiriminde yapısı adı verilen parametreleri) örtülü bir oluşturucuya sahip yapılarını gerektiren, val bildirimleri işaretiyle DefaultValue özniteliği. Tanımlı bir oluşturucuya sahip yapıları sıfır başlatma desteklemeye devam. Bu nedenle, DefaultValue özniteliği, bir bildirimi gibi sıfır değeri alanı için geçerlidir. Yapıları için örtülü Kurucular çünkü herhangi bir eylem gerçekleştirmez let ve do bağları türüne izin verilir, ancak geçirilen örtülü yapıcı parametre değerlerini özel alanları olarak kullanılabilir.
Açık Kurucular alan değerlerinin başlatma ilgili. Açık bir oluşturucuya sahip bir yapıya sahip olduğunuzda, yine sıfır başlatma destekler; Ancak, kullanmak istemediğiniz DefaultValue üzerindeki öznitelik val bildirimleri açık yapıcı ile çakıştığından. Hakkında daha fazla bilgi için val bildirimleri, bkz: Açık alanlar: Val anahtar sözcüğü (F#).
Öznitelikler ve erişilebilirlik değiştiricileri yapıları izin ve diğer türleri olarak ayný kurallara uyar. Daha fazla bilgi için, bkz. Öznitelikler (F#) ve Erişim denetimi (F#).
Aşağıdaki kod örnekleri yapısı tanımları görülmektedir.
// 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