الأساليب والأنواع العامة؛ القيود
اكتب أساليب وأنواعًا عامة، وأضف القيود باستخدام where T : … (class وstruct وnew() وواجهة أو فئة أساسية).
الأساليب والأنواع العامة؛ القيود درس مجاني في C# Academy على CoddyKit. هذا هو الدرس 1 من أصل 3. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في C# Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة C# Academy 3 دروس في المجموع.
نظرة عامة على الأنواع العامة
الهدف: إعادة استخدام الشيفرة بأمان باستخدام generics.
- الأساليب والأنواع العامة
- القيود: class وstruct وnew() والواجهة أو فئة الأساس
- حافظوا على صِغر الأمثلة ووضوحها
الأسلوب العام
يحتوي الأسلوب العام على قائمة معلمات نوع، مثل Identity<T>، ويعمل مع أنواع كثيرة.
using System;
// Generic method works for any T
public class Program
{
static T Identity<T>(T value)
{
// just returns what it got
return value;
}
public static void Main(string[] args)
{
int a = Identity<int>(5);
string b = Identity<string>("hi");
Console.WriteLine(a + " & " + b);
}
}
النوع العام
يُترجم النوع العام (مثل Box<T>) مرة واحدة، ويُستخدم مع أنواع ملموسة عديدة.
using System;
// Simple generic type to hold a value
public sealed class Box<T>
{
private T _value;
public Box(T value) { _value = value; }
public T Get() { return _value; }
public void Set(T value) { _value = value; }
}
public class Program
{
public static void Main(string[] args)
{
Box<int> bi = new Box<int>(10);
Box<string> bs = new Box<string>("ok");
Console.WriteLine(bi.Get() + " | " + bs.Get());
}
}
قيد new()
أضيفوا where T : new() إذا احتجتم إلى استدعاء new T() داخل الشيفرة العامة.
using System;
// Factory that can create T with a parameterless ctor
public static class Factory
{
public static T Create<T>() where T : new()
{
return new T(); // allowed thanks to new() constraint
}
}
public sealed class Person
{
public string Name;
public Person() { Name = "Anon"; }
}
public class Program
{
public static void Main(string[] args)
{
Person p = Factory.Create<Person>();
Console.WriteLine(p.Name);
}
}
قيد الواجهة
قيّدوا T بواجهة interface أو فئة أساس، حتى تتمكنوا من استدعاء أعضائها (مثل IComparable<T>).
using System;
// Min for two values that can be compared
public static class Utils
{
public static T Min<T>(T a, T b) where T : IComparable<T>
{
return a.CompareTo(b) <= 0 ? a : b;
}
}
public class Program
{
public static void Main(string[] args)
{
Console.WriteLine(Utils.Min(5, 3)); // 3
Console.WriteLine(Utils.Min("b", "a")); // a
}
}
قيود class وstruct ونصائح
قيود أخرى:
- where T : class → أنواع مرجعية فقط
- where T : struct → أنواع قيم غير قابلة للقيمة الفارغة
- اجمعوا القيود: where T : class, IDisposable, new()
- حافظوا على الحد الأدنى من واجهات API؛ وفضّلوا قيود الواجهة للمرونة.
معنى قيد new()
مراجعة
مراجعة: أنشئوا أساليب وأنواعًا عامة، وأضيفوا قيودًا لاستخدام الأعضاء المطلوبة: الواجهة أو فئة الأساس للسلوك، وclass/struct لتحديد النوع، وnew() لاستدعاء باني بلا معلمات.
الأسئلة الشائعة
هل درس «الأساليب والأنواع العامة؛ القيود» مجاني؟
نعم — نص درس «الأساليب والأنواع العامة؛ القيود» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة C# Academy، انتقل إلى CoddyKit PRO. تتضمن دورة C# Academy 3 دروس في المجموع.
ماذا ستتعلم في «الأساليب والأنواع العامة؛ القيود»؟
اكتب أساليب وأنواعًا عامة، وأضف القيود باستخدام where T : … (class وstruct وnew() وواجهة أو فئة أساسية). تتمرن على C# Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ C# Academy؟
لا تُشترط خبرة سابقة. C# Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 3.
كم من الوقت يستغرق درس «الأساليب والأنواع العامة؛ القيود»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس C# Academy هذا؟
نعم. كل درس في C# Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- الأساليب والأنواع العامة؛ القيود
- التغاير (in/out) مع الواجهات والمفوضات
- أنواع المراجع القابلة للقيمة null (للتوعية) والتعليقات التوضيحية (أنماط C# 6)