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). يمكنك استخدام أدوات التهيئة مع أو بدون معلمات المنشئ، مما يجعل إنشاء الكائنات مرنًا وموجزًا.
التحدي
متوسطقم بإنشاء ثلاثة كائنات 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}");
}
}يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس 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