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

Object Initializers

جزء من قسم Object Oriented Programming في رحلة C# على Coddy — الدرس 8 من 70.

توفر مُهيئات الكائنات طريقة مريحة لتعيين قيم الخصائص عند إنشاء كائن، دون الحاجة إلى استدعاء منشئ (constructor) يحتوي على العديد من المعلمات.

الطريقة التقليدية باستخدام المنشئ

public class Person
{
    public string Name { get; set; }
    public int Age { get; set; }
    public string City { get; set; }
}

Person person = new Person();
person.Name = "Alice";
person.Age = 25;
person.City = "New York";

استخدام صيغة مهيئ الكائن

Person person = new Person
{
    Name = "Alice",
    Age = 25,
    City = "New York"
};

مهيئات الكائنات مع المشيدات

public class Person
{
    public string Name { get; set; }
    public int Age { get; set; }
    public string City { get; set; }
    
    public Person(string name)
    {
        Name = name;
    }
}

// المشيد يضبط Name، والمهيئ يضبط الخصائص الأخرى
Person person = new Person("Bob")
{
    Age = 30,
    City = "London"
};

مهيئات الكائنات المتداخلة

public class Address
{
    public string Street { get; set; }
    public string City { get; set; }
}

public class Person
{
    public string Name { get; set; }
    public Address Address { get; set; }
}

Person person = new Person
{
    Name = "Charlie",
    Address = new Address
    {
        Street = "123 Main St",
        City = "Boston"
    }
};

إنشاء كائنات متعددة باستخدام أدوات التهيئة

Person person1 = new Person { Name = "Alice", Age = 25 };
Person person2 = new Person { Name = "Bob", Age = 30 };
Person person3 = new Person { Name = "Charlie", Age = 35 };

تجعل أدوات تهيئة الكائنات (Object initializers) الكود أكثر نظافة وأسهل في القراءة. يتم تعيين الخصائص بعد تشغيل المنشئ (constructor). يمكنك استخدام أدوات التهيئة مع أو بدون معلمات المنشئ، مما يجعل إنشاء الكائنات مرنًا وموجزًا.

challenge icon

التحدي

متوسط

قم بإنشاء ثلاثة كائنات Student باستخدام طرق تهيئة كائنات مختلفة:

  • student1: استخدم المنشئ الافتراضي (default constructor) مع مهيئ الكائن (object initializer) لتعيين جميع الخصائص (Name، StudentId، Major، GPA) من المدخلات
  • student2: استخدم مهيئ الكائن لتعيين Name = "Bob" و Major = "Engineering" فقط
  • student3: استخدم المنشئ مع "Charlie" كمعامل، ثم استخدم مهيئ الكائن لتعيين StudentId = 54321، Major = "Mathematics"، GPA = 3.5

ورقة مرجعية

توفر أدوات تهيئة الكائنات طريقة ملائمة لتعيين قيم الخصائص عند إنشاء كائن:

Person person = new Person
{
    Name = "Alice",
    Age = 25,
    City = "New York"
};

يمكن دمج أدوات تهيئة الكائنات مع المنشئات:

Person person = new Person("Bob")
{
    Age = 30,
    City = "London"
};

تسمح أدوات تهيئة الكائنات المتداخلة بتعيين خصائص الكائنات المتداخلة:

Person person = new Person
{
    Name = "Charlie",
    Address = new Address
    {
        Street = "123 Main St",
        City = "Boston"
    }
};

يمكن إنشاء كائنات متعددة بشكل موجز:

Person person1 = new Person { Name = "Alice", Age = 25 };
Person person2 = new Person { Name = "Bob", Age = 30 };

جرّب بنفسك

using System;

class Program
{
    static void Main()
    {
        string name = Console.ReadLine();
        int studentId = int.Parse(Console.ReadLine());
        string major = Console.ReadLine();
        double gpa = double.Parse(Console.ReadLine());
        
        // TODO: قم بإنشاء student1 باستخدام مهيئ الكائنات (object initializer) مع كافة الخصائص
        // استخدم المنشئ الافتراضي وقم بتعيين Name و StudentId و Major و GPA
        
        // TODO: قم بإنشاء student2 باستخدام مهيئ الكائنات مع Name و Major فقط
        // يجب أن يكون Name هو "Bob" و Major هو "Engineering"
        
        // TODO: قم بإنشاء student3 باستخدام المنشئ مع معامل الاسم "Charlie"
        // ثم استخدم مهيئ الكائنات لتعيين StudentId = 54321 و Major = "Mathematics" و GPA = 3.5
        
        Console.WriteLine($"Student 1: {student1.Name} (ID: {student1.StudentId}) - {student1.Major}, GPA: {student1.GPA}");
        Console.WriteLine($"Student 2: {student2.Name} (ID: {student2.StudentId}) - {student2.Major}, GPA: {student2.GPA}");
        Console.WriteLine($"Student 3: {student3.Name} (ID: {student3.StudentId}) - {student3.Major}, GPA: {student3.GPA}");
    }
}
quiz iconاختبر نفسك

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

جميع دروس Object Oriented Programming