Object Initializers
جزء من قسم البرمجة كائنية التوجه في رحلة C# على Coddy. الدرس 8 من 70.
توفر مُهيِّئات الكائنات طريقة ملائمة لتعيين قيم الخصائص عند إنشاء كائن، دون استدعاء مُنشئ ذي معلمات كثيرة.
الطريقة التقليدية باستخدام المُنشئ
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 };تجعل مهيئات الكائنات الشيفرة أنظف وأسهل قراءة. تُضبط الخصائص بعد تنفيذ المُنشئ. يمكنك استخدام المهيئات مع مَعلمات المُنشئ أو من دونها، مما يجعل إنشاء الكائنات مرنًا وموجزًا.
التحدي
متوسطأنشئ ثلاثة كائنات من Student باستخدام أساليب مختلفة لمهيئات الكائنات:
- student1: استخدم المُنشئ الافتراضي مع مهيئ كائن لتعيين جميع الخصائص (Name وStudentId وMajor وGPA) من الإدخال
- student2: استخدم مهيئ كائن لتعيين Name = "Bob" وMajor = "Engineering" فقط
- student3: استخدم المُنشئ مع "Charlie" كمعامل، ثم استخدم مهيئ كائن لتعيين StudentId = 54321 وMajor = "Mathematics" وGPA = 3.5
جرّب بنفسك
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 باستخدام مهيئ الكائن مع جميع الخصائص
// استخدم المُنشئ الافتراضي وعيّن 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}");
}
}يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس البرمجة كائنية التوجه
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تدرّب بنفسك: مترجم C# عبر الإنترنت