İngilizce dilinde oku

Aracılığıyla paylaş


Tür Bildirimleri

Q# kullanıcı tanımlı struct türlerini destekler. struct türleri F# dilindeki kayıt türlerine benzer; sabittir, ancak bir kopyalama ve güncelleştirme yapısını destekler.

Yapı türleri

struct türleri yalnızca adlandırılmış öğeler içerebilir ve anonim öğeleri desteklemez. Adlandırılmış öğelerin herhangi bir bileşimi desteklenir, ancak öğeler iç içe yerleştirilemez.

Örneğin aşağıdaki bildirim, Real ve Imaginaryolmak üzere iki adlandırılmış öğe içeren bir yapı Complex tanımlar ve her ikisi de Double:

Q#
struct Complex {
    Real : Double,
    Imaginary : Double,
}

İçerilen öğelere adları aracılığıyla veya yapısızlaştırma erişebilirsiniz (daha fazla bilgi için bkz. öğe erişimi). Ayrıca şeklin bildirimde tanımlananla eşleştiği tüm öğelerden oluşan bir demete unwrap işlecierişebilirsiniz.

struct türleri iki nedenden dolayı yararlıdır. İlk olarak, tanımlı türleri kullanan kitaplıklar ve programlar öğeleri yapısızlaştırma yerine adlarıyla eriştiği sürece, daha sonra herhangi bir kitaplık kodunu bozmadan ek öğeleri içerecek şekilde genişletilebilir. Bu nedenle, öğelere yapısızlaştırma yoluyla erişme genellikle önerilmez.

İkinci olarak Q#, öğe türleri aynı olsa bile iki struct türünün değerleri arasında otomatik dönüştürme olmadığından, belirli bir veri türüne yönelik amacı ve beklentileri iletmenizi sağlar.

Yapı oluşturucuları

Yeni struct türleri için oluşturucular, bir struct tanımı okuduğunda derleyici tarafından otomatik olarak oluşturulur. Önceki örnekteki Complex yapısı için

Q#
let complexPair = Complex(1.4, 2.1);

Örnekler kullanıcı tarafından new anahtar sözcüğüyle de tanımlanabilir, örneğin

Q#
let complexPair = new Complex { Real = 1.4, Imaginary = 2.1 };

Var olan bir yapıyı ... söz dizimi ile de kopyalayabilirsiniz

Q#
let copyPair = new Complex { ...complexPair };

Kopyalama sırasında, değiştirebileceğiniz alanları tek tek belirtebilirsiniz

Q#
let updatedPair = new Complex { ...complexPair, Real = 3.5 };