0Pricing
C# Academy · درس

الأساليب والحقول الساكنة

عرّفوا أعضاءً تنتمي إلى النوع نفسه

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

الساكن مقابل المثيل

ينتمي عضو المثيل إلى كل كائن، بينما ينتمي العضو الساكن إلى الفئة نفسها. توجد نسخة واحدة بالضبط من العضو الساكن، وتكون مشتركة بين الجميع.

using System;

class Counter
{
    public static int Total;   // shared
    public int Id;             // per instance
}

class Program
{
    static void Main()
    {
        Counter.Total = 5;
        Console.WriteLine("Shared Total: " + Counter.Total);
    }
}

تعريف الحقول الساكنة

يُوصَل إلى الحقل static عبر اسم الفئة، وليس عبر مثيل: ClassName.Field.

using System;

class Bank
{
    public static decimal InterestRate = 0.05m;
}

class Program
{
    static void Main()
    {
        Console.WriteLine("Rate: " + Bank.InterestRate);
    }
}

الأساليب الساكنة

يُنفَّذ الأسلوب static من دون مثيل. وتستدعونه على الفئة. ولا يمكنه استخدام حقول المثيل لعدم وجود this.

using System;

class MathUtil
{
    public static int Square(int x)
    {
        return x * x;
    }
}

class Program
{
    static void Main()
    {
        Console.WriteLine(MathUtil.Square(7));
    }
}

الحالة المشتركة بين المثيلات

بما أن للحقل الساكن نسخة واحدة، فإن كل مثيل يرى القيمة نفسها. ويفيد ذلك في العدادات والإعدادات المشتركة.

using System;

class Robot
{
    public static int Count;

    public Robot()
    {
        Count++;
    }
}

class Program
{
    static void Main()
    {
        new Robot();
        new Robot();
        new Robot();
        Console.WriteLine("Robots created: " + Robot.Count);
    }
}

لا يمكن للأساليب الساكنة استخدام بيانات المثيل

لا يملك الأسلوب الساكن this، ولذلك لا يمكنه استخدام سوى المعلمات والمتغيرات المحلية والأعضاء الساكنة الأخرى.

using System;

class Calculator
{
    public static int Add(int a, int b) => a + b;
    public static int Multiply(int a, int b) => a * b;
}

class Program
{
    static void Main()
    {
        Console.WriteLine(Calculator.Add(2, 3));
        Console.WriteLine(Calculator.Multiply(4, 5));
    }
}

الدمج بين الساكن والمثيل

يمكن للفئة أن تحتوي على النوعين معًا. ويمكن لأساليب المثيل قراءة الأعضاء الساكنة، لكن لا يمكن للأساليب الساكنة قراءة أعضاء المثيل.

using System;

class Account
{
    public static decimal Fee = 2m;
    public decimal Balance;

    public decimal NetBalance()
    {
        return Balance - Fee;   // instance method can read static
    }
}

class Program
{
    static void Main()
    {
        var a = new Account { Balance = 100m };
        Console.WriteLine("Net: " + a.NetBalance());
    }
}

نمط العدادات الساكنة

يُعد إسناد معرّف لكل كائن جديد من عدّاد ساكن استخدامًا تقليديًا للحقول الساكنة.

using System;

class Ticket
{
    private static int _next = 1;
    public int Number;

    public Ticket()
    {
        Number = _next++;
    }
}

class Program
{
    static void Main()
    {
        Console.WriteLine(new Ticket().Number);
        Console.WriteLine(new Ticket().Number);
        Console.WriteLine(new Ticket().Number);
    }
}

الأساليب المساعدة الساكنة

تُعد الأساليب الساكنة رائعة للعمليات عديمة الحالة التي تعتمد فقط على مدخلاتها، مثل أدوات التنسيق والتحويل.

using System;

class Format
{
    public static string Money(decimal amount)
    {
        return "$" + amount.ToString("0.00");
    }
}

class Program
{
    static void Main()
    {
        Console.WriteLine(Format.Money(12.5m));
    }
}

استدعاء أسلوب ساكن من أسلوب ساكن

يمكن للأساليب الساكنة استدعاء أساليب ساكنة أخرى في الفئة نفسها بحرية، من دون الحاجة إلى أي مثيل.

using System;

class Geometry
{
    public static double CircleArea(double r) => Math.PI * Square(r);
    private static double Square(double x) => x * x;
}

class Program
{
    static void Main()
    {
        Console.WriteLine(Geometry.CircleArea(2).ToString("0.00"));
    }
}

تستمر الحقول الساكنة

يحافظ الحقل الساكن على قيمته طوال مدة البرنامج، وليس طوال مدة كائن واحد فقط. استخدموه للتخزين المؤقت أو للمجاميع التراكمية.

using System;

class Logger
{
    public static int MessageCount;

    public static void Log(string msg)
    {
        MessageCount++;
        Console.WriteLine("[" + MessageCount + "] " + msg);
    }
}

class Program
{
    static void Main()
    {
        Logger.Log("start");
        Logger.Log("working");
        Logger.Log("done");
    }
}

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

تمثل الأعضاء الساكنة المفاهيم العامة على مستوى الفئة: المعدلات المشتركة والعدادات والأساليب المساعدة عديمة الحالة، بينما تحتوي أعضاء المثيل على بيانات كل كائن.

using System;

class Order
{
    public static decimal TaxRate = 0.10m;
    public decimal Subtotal;

    public decimal Total() => Subtotal + Subtotal * TaxRate;
}

class Program
{
    static void Main()
    {
        var o = new Order { Subtotal = 200m };
        Console.WriteLine("Total: " + o.Total());
    }
}

تحقق سريع

اختبروا مدى فهمكم للأعضاء الساكنة.

مراجعة

تنتمي الأعضاء الساكنة إلى الفئة، ولها نسخة واحدة مشتركة؛ بينما تنتمي أعضاء المثيل إلى كل كائن. لا تملك الأساليب الساكنة this ولا يمكنها الوصول إلى بيانات المثيل، لكن يمكن لشيفرة المثيل قراءة الأعضاء الساكنة. استخدموا الساكن للعدادات والإعدادات المشتركة والأساليب المساعدة عديمة الحالة.

using System;

class Demo
{
    public static int Shared;
    public int Own;
    public static void Bump() => Shared++;
}

class Program
{
    static void Main()
    {
        Demo.Bump();
        Demo.Bump();
        Console.WriteLine(Demo.Shared);
    }
}

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

هل درس «الأساليب والحقول الساكنة» مجاني؟

نعم — نص درس «الأساليب والحقول الساكنة» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 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. الثوابت والحقول readonly
  4. التصميم الساكن مقابل تصميم النسخ
← العودة إلى C# Academy