Fields مقابل Properties
جزء من قسم Object Oriented Programming في رحلة C# على Coddy — الدرس 6 من 70.
الحقول هي متغيرات يتم التصريح عنها مباشرة داخل الفئة (class). الخصائص هي أعضاء توفر وصولاً متحكماً به إلى الحقول باستخدام أدوات الوصول get و set.
تخزن الحقول البيانات مباشرة
public class Person
{
// الحقول - تخزين مباشر للمتغيرات
private string name;
private int age;
}توفر الخصائص وصولاً متحكماً به باستخدام get و set
public class Person
{
private string name;
// خاصية مع حقل دعم
public string Name
{
get { return name; }
set { name = value; }
}
}الخصائص المنفذة تلقائياً (صيغة مختصرة)
public class Person
{
// خاصية منفذة تلقائياً
public string Name { get; set; }
public int Age { get; set; }
}يمكن أن تتضمن الخصائص منطق التحقق من الصحة
public class Person
{
private int age;
public int Age
{
get { return age; }
set
{
if (value >= 0 && value <= 120)
age = value;
}
}
}خاصية للقراءة فقط (أداة الوصول get فقط)
public class Circle
{
private double radius;
public double Radius
{
get { return radius; }
}
// خاصية محسوبة للقراءة فقط
public double Area
{
get { return Math.PI * radius * radius; }
}
}عادة ما تكون الحقول خاصة ويتم الوصول إليها من خلال الخصائص. تسمح لك الخصائص بإضافة المنطق، والتحقق من الصحة، والتحكم في كيفية الوصول إلى البيانات أو تعديلها. الخصائص المنفذة تلقائياً (Auto-implemented properties) تكون مريحة عندما لا تحتاج إلى منطق إضافي.
التحدي
متوسطأنشئ فئة BankAccount توضح الفرق بين الحقول (fields) والخصائص (properties):
- حقل
balanceخاص لتخزين رصيد الحساب - خاصية
AccountNameمطبقة تلقائيًا (auto-implemented) - خاصية
Balanceللقراءة فقط تُرجع قيمة حقل الرصيد - الأساليب
DepositوWithdrawالتي تقوم بتعديل الحقل الخاص
ورقة مرجعية
الحقول (Fields) هي متغيرات يتم التصريح عنها مباشرة في الفئة (class)، بينما توفر الخصائص (properties) وصولاً متحكماً فيه إلى الحقول باستخدام أدوات الوصول get و set.
الحقول تخزن البيانات مباشرة:
public class Person
{
private string name;
private int age;
}الخصائص توفر وصولاً متحكماً فيه باستخدام get و set:
public class Person
{
private string name;
public string Name
{
get { return name; }
set { name = value; }
}
}الخصائص المنفذة تلقائياً (طريقة مختصرة):
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
}خصائص مع منطق التحقق من الصحة:
public int Age
{
get { return age; }
set
{
if (value >= 0 && value <= 120)
age = value;
}
}خاصية للقراءة فقط (أداة الوصول get فقط):
public double Area
{
get { return Math.PI * radius * radius; }
}عادةً ما تكون الحقول خاصة (private) ويتم الوصول إليها من خلال الخصائص. تتيح لك الخصائص إضافة المنطق، والتحقق من الصحة، والتحكم في كيفية الوصول إلى البيانات أو تعديلها.
جرّب بنفسك
using System;
class Program
{
static void Main()
{
string accountName = Console.ReadLine();
decimal initialBalance = decimal.Parse(Console.ReadLine());
decimal depositAmount = decimal.Parse(Console.ReadLine());
BankAccount account = new BankAccount(accountName, initialBalance);
Console.WriteLine($"Account: {account.AccountName}");
Console.WriteLine($"Initial Balance: ${account.Balance}");
account.Deposit(depositAmount);
Console.WriteLine($"After Deposit: ${account.Balance}");
string result = account.Withdraw(2000);
Console.WriteLine($"Withdraw attempt: {result}");
Console.WriteLine($"Final Balance: ${account.Balance}");
}
}يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس Object Oriented Programming
1أساسيات OOP
الملفات الخارجيةNamespaces والتوجيهاتمقدمة في Classes و Objectsالكلمة المفتاحية 'this'Methods والمعاملاتFields مقابل PropertiesConstructorsObject Initializersمراجعة - آلة حاسبة بسيطة4الوراثة
صيغة الوراثة الأساسية (:)الكلمة المفتاحية 'base'الكلمات المفتاحية Virtual و Overrideالأصناف المختومة (Sealed Classes)الفئة الأساسية 'object'مراجعة - هيكلية الموظفين7ميزات متقدمة
تحميل العوامل (Operator Overloading)المفهرسات (Indexers (this[]))إعادة تعريف ()ToStringدوال التوسعة (Extension Methods)ملخص - Custom List2الخصائص والأعضاء الساكنة (Static Members)
الخصائص المطبقة تلقائيًا (Auto-Implemented Properties)خصائص القراءة فقط والكتابة فقطالحقول والدوال الساكنة (Static)الفئات الساكنة (Static Classes)الأعضاء ذات البنية التعبيرية (Expression-Bodied Members)5تعدد الأشكال والواجهات (Polymorphism & Interfaces)
تعدد الأشكال: وقت التجميع مقابل وقت التشغيلالواجهة مقابل الفئة المجردة (Abstract Class)الواجهات المتعددةالواجهات الصريحةUpcasting و Downcastingملخص - حاسبة الأشكال8مفاهيم البرمجة كائنية التوجه (OOP) المتقدمة
التركيب بدلاً من الوراثةالـ Generics (الأصناف والدوال)الـ Delegates والأحداثالـ Attributes والـ Reflectionواجهة IDisposable وجملة usingأساسيات Dependency Injection