Positional Record
Norminal Record’lar Object Initilizer’lar ile ilk değerleri verilerek üretilebilen readonly datalardı. Positional Recard’lar ise esasında Record’lar içerisinde tanımlama yapabildiğimiz constructor ve deconstructor kullanımlarını daha da özelleştirerek kullanımlamasını sağlamaktadır. Positional Record bizi bir semantik kazandırıyor. Recard’da çalışırken constructor veya deconstructor oluşturmak istiyorsak bunu eski yöntem yerine yapmaktansa positional record kullanarak bunu daha basit bir şekilde yapıyoruz.
Özetiyle Positional Record; bir record üzerinde contructor ve deconstructor yapılmasını hızlı bir şekilde oluşturmamızı sağlayan bir semantik sağlamaktadır.
Record Position olmadan eski yöntemle Constructor ve Deconstructor kullanımı
record MyRecord
{
public MyRecord()
{
}
public void Deconstruct()
{
}
}
Record Position kullanarak Constructor ve Deconstructor kullanımı
record MyRecord(string name, string surname) //Record Position
{
}
MyRecord m = new MyRecord("John", "Doe");
var (n, s = m;)
Böylelikle hem Constructor hem de Deconstructor tanımlayıp kullanmış olduk.
MyRecord’a verilen değişkenler karşılığında arkadaş bu değişkenler için init şeklinde propertyler tanımlanır.
Positional Record kullanılırken parametlerin karşılıkları olan propertyleri manuel oluşturmak zorunda değiliz.
Bu parametrelerin karşılığı olarak compiler seviyesinde propertyler otomatik oluşturulmaktadır. Bu propertler oluşturulurken init olacak şekilde oluşturulur.