Avatar ·

ما الفرق بين الحقل (field) والخاصية (property) في C#؟

مرحبًا! بدأت تعلم لغة C# ولا أستطيع فهم الفرق بين الحقل والخاصية بشكل كامل. يبدو أن كلاهما يخزن البيانات، ولكن لماذا نحتاج إلى الخصائص إذا كان بإمكاننا استخدام الحقول فقط؟ رأيت أمثلة حيث يكتب الناس شيئًا مثل: ```csharp public class Person { public string Name; // حقل public int Age { get; set; } // خاصية } ``` ويبدو أن كلاهما يعمل بنفس الطريقة. لكنني سمعت أن الخصائص هي الطريقة "الصحيحة"، وأنه من الأفضل جعل الحقول خاصة. لماذا؟ ما السر هنا؟ هل يمكنك التوضيح بأمثلة؟ شكرًا مقدمًا! <<>>

الفرق الأساسي: الحقل هو متغير، الخاصية هي دالة

للوهلة الأولى، يبدو الحقل والخاصية متشابهين، لكن طبيعتهما الداخلية مختلفة جوهريًا. الحقل هو مجرد منطقة ذاكرة لتخزين القيمة. الخاصية هي سكر نحوي فوق الدالتين get و set اللتين تتحكمان في الوصول إلى الحقل.

هكذا يرى المترجم الكود الخاص بك: