Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

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) تكون مريحة عندما لا تحتاج إلى منطق إضافي.

challenge icon

التحدي

متوسط

أنشئ فئة 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}");
    }
}
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس Object Oriented Programming