في هذه الصفحة
استكمالا للمقال اللى فات عن ال records هنكمل النهارده فى الأجزاء اللى متكلمناش فيها فى المقال اللى فات و هنحاول نغطى أجزاء جديدة مهمة جداً فى الموضوع.
هنبدأ الأول بتكملة بسيطه للجزء اللى فات و هو طريقة تعريف ال record فى الكود والطريقه اللى اتكلمنا عليها فى المقال اللى فات هى:
record Employee(string FirstName, string LastName, double Salary);
ولكن فيه طريقه تانيه زى اللى فى ال code snippet الجايه:
Record as Class Declaration
var employee1 = new Employee { FirstName = "Mohamed", LastName = "Magdi", Salary = 1000 };
var employee2 = new Employee { FirstName = "Mohamed", LastName = "Magdi", Salary = 1000 };
Console.WriteLine(employee1); // Output: Employee { FirstName = Mohamed, LastName = Magdi, Salary = 1000 }
Console.WriteLine(employee2); // Output: Employee { FirstName = Mohamed, LastName = Magdi, Salary = 1000 }
Console.WriteLine($"Is Equal = {employee1 == employee2}"); // Output: IsEqual = True
employee1.LastName = "Prop is mutable here!";
Console.WriteLine($"Is Equal = {employee1 == employee2}"); // Output: IsEqual = False
record Employee
{
public string FirstName { get; set; }
public string LastName { get; set; }
public double Salary { get; set; }
}
زى ما احنا شايفين هنا، هو نفس تعريف الـ class بالظبط ولكن هنا لما بدلت كلمة class بكلمة record خدت كل الخصائص بتاعت ال record الا feature واحدة وهى Immutability ف دى برده طريقة تقدر تستفيد بيها بال record لو مش فارق معاك ال immutability و هتكون سهلة جدا فى ال Migration لو عايز تعدل الـ DTOs بتاعتك مثلا كلها تكون record عشان تستفيد بباقي المميزات
طيب لو عايزين ناخد كمان الـ immutability و بالـ syntax بتاع ال class ؟