0Pricing
C# Academy · درس

مهيئات الكائنات والمجموعات

عيّنوا الخصائص بإيجاز وقت الإنشاء

مهيئات الكائنات والمجموعات درس مجاني في C# Academy على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في C# Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة C# Academy 4 دروس في المجموع.

ما هو مُهيِّئ الكائن؟

يُعيّن مُهيِّئ الكائن الخصائص أو الحقول العامة مباشرة بعد new، داخل { }، من دون كتابة مُنشئ لكل تركيبة.

using System;

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

class Program
{
    static void Main()
    {
        var p = new Person { Name = "Ada", Age = 36 };
        Console.WriteLine(p.Name + ", " + p.Age);
    }
}

صيغة المُهيِّئ

أدرجوا تعيينات الخصائص، وافصلوا بينها بفواصل داخل الأقواس. وتُنفَّذ هذه التعيينات بعد اكتمال المُنشئ.

using System;

class Car
{
    public string Make { get; set; }
    public string Model { get; set; }
    public int Year { get; set; }
}

class Program
{
    static void Main()
    {
        var car = new Car
        {
            Make = "Toyota",
            Model = "Corolla",
            Year = 2022
        };
        Console.WriteLine(car.Year + " " + car.Make + " " + car.Model);
    }
}

دمج المُنشئ مع المُهيِّئ

يمكنكم استدعاء مُنشئ AND استخدام مُهيِّئ. يُنفَّذ المُنشئ أولًا، ثم يُسنِد المُهيِّئ الخصائص المدرجة.

using System;

class Widget
{
    public string Id { get; }
    public string Label { get; set; }

    public Widget(string id) { Id = id; }
}

class Program
{
    static void Main()
    {
        var w = new Widget("w1") { Label = "Submit" };
        Console.WriteLine(w.Id + ": " + w.Label);
    }
}

تهيئة بعض الخصائص فقط

أدرجوا الخصائص التي تهمكم فقط؛ أما البقية فتحتفظ بقيمها الافتراضية. وهذا يجعل المُهيِّئات مرنة.

using System;

class Settings
{
    public bool DarkMode { get; set; } = false;
    public int Volume { get; set; } = 50;
    public string Lang { get; set; } = "en";
}

class Program
{
    static void Main()
    {
        var s = new Settings { DarkMode = true };
        Console.WriteLine(s.DarkMode + ", " + s.Volume + ", " + s.Lang);
    }
}

مُهيِّئات المجموعات

يملأ مُهيِّئ المجموعة قائمة أو مجموعة أو مصفوفة وقت الإنشاء، باستخدام { } وعناصر مفصولة بفواصل.

using System;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        var nums = new List<int> { 1, 2, 3, 4, 5 };
        Console.WriteLine("Count: " + nums.Count);
        Console.WriteLine("Sum: " + Sum(nums));
    }

    static int Sum(List<int> list)
    {
        int t = 0;
        foreach (var n in list) t += n;
        return t;
    }
}

كيف تعمل مُهيِّئات المجموعات؟

يحوّل المترجم كل عنصر إلى استدعاء Add(...). ويدعم هذه الصيغة أي نوع يملك أسلوب Add وواجهة IEnumerable.

using System;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        var names = new List<string> { "Ann", "Bob", "Cara" };
        foreach (var n in names)
            Console.WriteLine(n);
    }
}

مُهيِّئات القواميس

يمكن تهيئة القواميس باستخدام أزواج المفتاح/القيمة داخل الأقواس، وهو أمر مفيد جدًا لجداول البحث.

using System;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        var ages = new Dictionary<string, int>
        {
            ["Ann"] = 30,
            ["Bob"] = 25
        };
        Console.WriteLine("Ann is " + ages["Ann"]);
    }
}

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

يمكن لمُهيِّئ كائن تهيئة كائنات متداخلة، وبناء رسم بياني صغير للكائنات في تعبير واحد.

using System;

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

class Customer
{
    public string Name { get; set; }
    public Address Home { get; set; } = new Address();
}

class Program
{
    static void Main()
    {
        var c = new Customer
        {
            Name = "Lin",
            Home = new Address { City = "Tokyo" }
        };
        Console.WriteLine(c.Name + " in " + c.Home.City);
    }
}

مجموعات من الكائنات

يمكنكم دمج الميزتين معًا: تهيئة قائمة تكون عناصرها نفسها مبنية باستخدام مُهيِّئات الكائنات.

using System;
using System.Collections.Generic;

class Item
{
    public string Name { get; set; }
    public decimal Price { get; set; }
}

class Program
{
    static void Main()
    {
        var cart = new List<Item>
        {
            new Item { Name = "Pen", Price = 1.5m },
            new Item { Name = "Book", Price = 9.0m }
        };
        decimal total = 0;
        foreach (var i in cart) total += i.Price;
        Console.WriteLine("Total: " + total);
    }
}

المُهيِّئات وخصائص init

تُعد مُهيِّئات الكائنات الطريقة المناسبة لتعيين الخصائص التي تقتصر على init، إذ لا يمكن إسنادها إلا أثناء التهيئة.

using System;

class Config
{
    public string Env { get; init; }
    public int Retries { get; init; }
}

class Program
{
    static void Main()
    {
        var c = new Config { Env = "prod", Retries = 3 };
        Console.WriteLine(c.Env + " / " + c.Retries);
    }
}

تجميع المفاهيم

تجعل المُهيِّئات عملية الإنشاء تصريحية وسهلة القراءة، لا سيما مع كائنات الإعداد وبيانات الاختبار.

using System;
using System.Collections.Generic;

class Team
{
    public string Name { get; set; }
    public List<string> Members { get; set; } = new List<string>();
}

class Program
{
    static void Main()
    {
        var t = new Team
        {
            Name = "Alpha",
            Members = { "Ann", "Bob", "Cara" }
        };
        Console.WriteLine(t.Name + " has " + t.Members.Count + " members");
    }
}

تحقق سريع

اختبروا مدى فهمكم للمُهيِّئات.

مراجعة

تعيّن مُهيِّئات الكائنات الأعضاء العامة داخل { } بعد new، وتُنفَّذ بعد المُنشئ. وتضيف مُهيِّئات المجموعات العناصر عبر استدعاءات Add ضمنية، كما تدعم القواميس أزواج المفتاح/القيمة. ويمكن تداخل النوعين، والعمل مع خصائص init، وجعل عملية الإنشاء موجزة وتصريحية.

using System;
using System.Collections.Generic;

class Demo
{
    public string Name { get; set; }
    public List<int> Nums { get; set; } = new List<int>();
}

class Program
{
    static void Main()
    {
        var d = new Demo { Name = "x", Nums = { 1, 2, 3 } };
        Console.WriteLine(d.Name + " " + d.Nums.Count);
    }
}

الأسئلة الشائعة

هل درس «مهيئات الكائنات والمجموعات» مجاني؟

نعم — نص درس «مهيئات الكائنات والمجموعات» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة C# Academy، انتقل إلى CoddyKit PRO. تتضمن دورة C# Academy 4 دروس في المجموع.

ماذا ستتعلم في «مهيئات الكائنات والمجموعات»؟

عيّنوا الخصائص بإيجاز وقت الإنشاء تتمرن على C# Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ C# Academy؟

لا تُشترط خبرة سابقة. C# Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.

كم من الوقت يستغرق درس «مهيئات الكائنات والمجموعات»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس C# Academy هذا؟

نعم. كل درس في C# Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. تعريف البُناة
  2. تسلسل استدعاء البُناة باستخدام this
  3. مهيئات الكائنات والمجموعات
  4. البُناة الساكنة
← العودة إلى C# Academy