0Pricing
C# Academy · درس

البُناة الأساسيون في الفئات

صرّحوا عن معاملات الباني في ترويسة النوع

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

ما المقصود بالمنشئ الأساسي؟

يتيح لك المنشئ الأساسي التصريح بمعاملات المنشئ مباشرةً في ترويسة الفئة، مثل class Point(int x, int y). وتكون المعاملات في النطاق ضمن جسم الفئة بالكامل.

using System;

class Point(int x, int y) {
    public int X => x;
    public int Y => y;
}

var p = new Point(3, 4);
Console.WriteLine(p.X + "," + p.Y); // 3,4

لا مزيد من الشيفرة النمطية

قبل ظهور المنشئات الأساسية، كنت تكتب جسم منشئ لمجرد نسخ المعاملات إلى الحقول. أما الآن فتعلن الترويسة عن المعاملات، ويمكنك الرجوع إليها مباشرةً.

using System;

class Greeter(string name) {
    public string Greet() => "Hello, " + name + "!";
}

Console.WriteLine(new Greeter("Ada").Greet()); // Hello, Ada!

المعاملات في النطاق في كل مكان

يمكن استخدام معاملات المنشئ الأساسي في مهيئات الخصائص وأجسام الأساليب ومهيئات الحقول في أي موضع داخل الفئة.

using System;

class Circle(double radius) {
    public double Area => Math.PI * radius * radius;
    public double Circumference => 2 * Math.PI * radius;
}

var c = new Circle(2);
Console.WriteLine(Math.Round(c.Area, 2)); // 12.57

تهيئة الحقول والخصائص

يمكنك استخدام معامل منشئ أساسي لتهيئة حقل أو خاصية وقت التصريح عنهما.

using System;

class Account(decimal initial) {
    public decimal Balance { get; private set; } = initial;
    public void Deposit(decimal amount) => Balance += amount;
}

var a = new Account(100m);
a.Deposit(50m);
Console.WriteLine(a.Balance); // 150

التحقق في الترويسة

يمكنك التحقق من صحة معاملات المنشئ الأساسي مباشرةً باستخدام تعبيرات throw عند إسنادها إلى حقل.

using System;

class Person(string name) {
    public string Name { get; } =
        string.IsNullOrWhiteSpace(name)
            ? throw new ArgumentException("name required")
            : name;
}

Console.WriteLine(new Person("Lin").Name); // Lin

إضافة منشئات أخرى

يمكن للفئة التي تستخدم منشئًا أساسيًا أن تعلن منشئات إضافية، لكن يجب أن تتسلسل إلى المنشئ الأساسي باستخدام : this(...).

using System;

class Box(int width, int height) {
    public int Width => width;
    public int Height => height;
    public Box(int size) : this(size, size) { }
}

var sq = new Box(5);
Console.WriteLine(sq.Width + "x" + sq.Height); // 5x5

أجسام المنشئات الأساسية

لا تملك المنشئات الأساسية جسمًا خاصًا بها. يوضع المنطق الذي يجب تشغيله عند الإنشاء في مهيئات الحقول أو في منشئ عادي متسلسل.

using System;

class Logger(string prefix) {
    private readonly string tag = "[" + prefix + "]";
    public void Log(string msg) => Console.WriteLine(tag + " " + msg);
}

new Logger("INFO").Log("started"); // [INFO] started

لا تتحول تلقائيًا إلى خصائص عامة

بخلاف السجلات، لا ينشئ المنشئ الأساسي في الفئة العادية خصائص عامة. وتظل المعاملات خاصة بالفئة ما لم تكشف عنها بنفسك.

using System;

class Temp(double celsius) {
    // celsius is NOT a public property here
    public double Fahrenheit => celsius * 9 / 5 + 32;
}

Console.WriteLine(new Temp(100).Fahrenheit); // 212

تصبح المعاملات الملتقطة حقولًا

عند استخدام معامل منشئ أساسي في أسلوب، وليس في مهيئ فحسب، يلتقطه المترجم في حقل مخفي حتى يظل موجودًا بعد الإنشاء.

using System;

class Counter(int start) {
    private int value = start;
    public int Next() => value++;
}

var c = new Counter(10);
Console.WriteLine(c.Next()); // 10
Console.WriteLine(c.Next()); // 11

حقن تبعية أكثر نظافة

تحظى المنشئات الأساسية بشعبية في حقن التبعية (DI): إذ تعلن عن الخدمات في الترويسة وتستخدمها في الأساليب، من دون إسناد يدوي إلى الحقول.

using System;

interface IClock { string Now(); }
class FakeClock : IClock { public string Now() => "12:00"; }

class Service(IClock clock) {
    public string Report() => "Time is " + clock.Now();
}

Console.WriteLine(new Service(new FakeClock()).Report()); // Time is 12:00

جمع المفاهيم

تستخدم هذه الفئة منشئًا أساسيًا لتبعياتها وتكشف عن خاصية محسوبة، من دون جسم منشئ صريح.

using System;

class Rectangle(double w, double h) {
    public double Area => w * h;
    public double Perimeter => 2 * (w + h);
}

var r = new Rectangle(3, 4);
Console.WriteLine(r.Area + " " + r.Perimeter); // 12 14

تحقق سريع

اختبر فهمك للمنشئات الأساسية في الفئات.

مراجعة

لقد تعلمت استخدام المنشئات الأساسية في الفئات.

  • class C(int x) يعلن معاملات المنشئ في الترويسة.
  • تكون المعاملات في النطاق ضمن جسم الفئة بالكامل.
  • تتسلسل المنشئات الإضافية باستخدام : this(...).
  • لا تتحول هذه المعاملات تلقائيًا إلى خصائص عامة في الفئة العادية.

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

هل درس «البُناة الأساسيون في الفئات» مجاني؟

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

ماذا ستتعلم في «البُناة الأساسيون في الفئات»؟

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

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

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

كم من الوقت يستغرق درس «البُناة الأساسيون في الفئات»؟

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

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

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

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

  1. البُناة الأساسيون في الفئات
  2. التقاط المعاملات في الأعضاء
  3. البُناة الأساسيون مع Structs
  4. الدمج مع الخصائص والأنواع الأساسية
← العودة إلى C# Academy