0Pricing
C# Academy · درس

الفئات الساكنة للأدوات المساعدة

اجمعوا الدوال المساعدة في فئات ساكنة

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

ما هي الفئة الساكنة؟

تُعرَّف الفئة الساكنة باستخدام static class. ولا يمكنها احتواء سوى أعضاء ساكنة، كما أنها لا يمكن إنشاء مثيلات منها. وهي المكان الطبيعي للدوال المساعدة.

using System;

static class StringUtils
{
    public static string Shout(string s) => s.ToUpper() + "!";
}

class Program
{
    static void Main()
    {
        Console.WriteLine(StringUtils.Shout("hello"));
    }
}

لا يمكن إنشاء مثيلات

لا تكتبوا new أبدًا مع فئة ساكنة. ويجري كل الوصول إليها مباشرةً عبر اسم الفئة.

using System;

static class MathUtils
{
    public static int Cube(int x) => x * x * x;
}

class Program
{
    static void Main()
    {
        // No instance needed
        Console.WriteLine(MathUtils.Cube(3));
    }
}

لا يُسمح إلا بالأعضاء الساكنة

يفرض المترجم أن يكون كل عضو في الفئة الساكنة ساكنًا. ولا يُسمح بحقوقول المثيل أو المُنشئات.

using System;

static class Temperature
{
    public static double ToFahrenheit(double c) => c * 9 / 5 + 32;
    public static double ToCelsius(double f) => (f - 32) * 5 / 9;
}

class Program
{
    static void Main()
    {
        Console.WriteLine(Temperature.ToFahrenheit(100));
        Console.WriteLine(Temperature.ToCelsius(32));
    }
}

تجميع الأساليب المساعدة ذات الصلة

تجمع الفئة الساكنة الدوال التي تشترك في موضوع واحد، وتمنحها مساحة أسماء واضحة مثل Validation.IsEmail(...).

using System;

static class Validation
{
    public static bool IsPositive(int n) => n > 0;
    public static bool IsEmail(string s) => s.Contains("@") && s.Contains(".");
}

class Program
{
    static void Main()
    {
        Console.WriteLine(Validation.IsPositive(5));
        Console.WriteLine(Validation.IsEmail("a@b.com"));
    }
}

الفئة Math المضمّنة

تُعد الفئة Math في .NET فئة ساكنة. ولا تنشئون مثيلًا منها أبدًا؛ بل تستدعون Math.Sqrt وMath.Max وما إلى ذلك.

using System;

class Program
{
    static void Main()
    {
        Console.WriteLine(Math.Max(3, 9));
        Console.WriteLine(Math.Sqrt(144));
        Console.WriteLine(Math.Round(3.14159, 2));
    }
}

فئة ساكنة مع حقول ساكنة

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

using System;

static class Pricing
{
    public static decimal Tax = 0.08m;

    public static decimal WithTax(decimal price) => price + price * Tax;
}

class Program
{
    static void Main()
    {
        Console.WriteLine(Pricing.WithTax(100m));
    }
}

الدوال النقية

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

using System;

static class Geometry
{
    public static double RectArea(double w, double h) => w * h;
    public static double TriArea(double b, double h) => 0.5 * b * h;
}

class Program
{
    static void Main()
    {
        Console.WriteLine(Geometry.RectArea(4, 5));
        Console.WriteLine(Geometry.TriArea(6, 3));
    }
}

تركيب الأساليب المساعدة

يمكن للأساليب المساعدة الساكنة استدعاء بعضها بعضًا، وبناء عمليات أكبر من عمليات أصغر.

using System;

static class TextUtils
{
    public static string Clean(string s) => s.Trim().ToLower();
    public static string Slug(string s) => Clean(s).Replace(" ", "-");
}

class Program
{
    static void Main()
    {
        Console.WriteLine(TextUtils.Slug("  Hello World  "));
    }
}

الفئة الساكنة مقابل الأعضاء الساكنة في الفئة العادية

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

using System;

static class Convert2
{
    public static int FeetToInches(int feet) => feet * 12;
}

class Program
{
    static void Main()
    {
        Console.WriteLine(Convert2.FeetToInches(3) + " inches");
    }
}

الحفاظ على سهولة اكتشاف الأدوات المساعدة

اجمعوا الأساليب المساعدة في فئات ساكنة ذات أسماء واضحة (DateUtils وStringUtils) حتى يتمكن المطورون الآخرون من العثور عليها بسهولة.

using System;

static class DateUtils
{
    public static bool IsWeekend(DayOfWeek d) =>
        d == DayOfWeek.Saturday || d == DayOfWeek.Sunday;
}

class Program
{
    static void Main()
    {
        Console.WriteLine(DateUtils.IsWeekend(DayOfWeek.Sunday));
        Console.WriteLine(DateUtils.IsWeekend(DayOfWeek.Monday));
    }
}

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

تجمع فئات الأدوات المساعدة الساكنة المنطق عديم الحالة خلف اسم واضح، مما يقلل التكرار في قاعدة الشيفرة.

using System;

static class MoneyUtils
{
    public static string Format(decimal amount) => "$" + amount.ToString("0.00");
    public static decimal ApplyDiscount(decimal price, double pct) =>
        price * (decimal)(1 - pct / 100);
}

class Program
{
    static void Main()
    {
        decimal discounted = MoneyUtils.ApplyDiscount(80m, 25);
        Console.WriteLine(MoneyUtils.Format(discounted));
    }
}

تحقق سريع

اختبروا مدى فهمكم للفئات الساكنة.

مراجعة

لا يمكن إنشاء مثيلات من الفئة الساكنة (static class X)، ولا يجوز أن تحتوي إلا على أعضاء ساكنة. وهي المكان المعتاد للدوال المساعدة عديمة الحالة والثوابت، مجمعةً تحت اسم وصفي. وتُعد الفئة المضمّنة Math مثالًا مألوفًا.

using System;

static class Util
{
    public static int Double(int n) => n * 2;
}

class Program
{
    static void Main()
    {
        Console.WriteLine(Util.Double(21));
    }
}

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

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

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

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

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

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

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

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

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

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

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

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

  1. الأساليب والحقول الساكنة
  2. الفئات الساكنة للأدوات المساعدة
  3. الثوابت والحقول readonly
  4. التصميم الساكن مقابل تصميم النسخ
← العودة إلى C# Academy