المُعدِّل required
أجبِروا المستدعين على تعيين الخصائص الأساسية
المُعدِّل required درس مجاني في C# Academy على CoddyKit. هذا هو الدرس 2 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في C# Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة C# Academy 4 دروس في المجموع.
مُعدِّل required
يفرض مُعدِّل required على المستدعين تعيين خاصية أو حقل عند إنشاء كائن. وينقل أخطاء «نسيتم قيمة» من وقت التشغيل إلى وقت الترجمة.
using System;
class Person {
public required string Name { get; init; }
}
var p = new Person { Name = "Ada" };
Console.WriteLine(p.Name); // Adaيؤدي إغفال عضو required إلى فشل الترجمة
إذا أغفل المستدعي عضوًا من نوع required، يُبلغ المترجم عن خطأ قبل تشغيل البرنامج.
using System;
class Person {
public required string Name { get; init; }
}
// var bad = new Person { }; // compile error: Name is required
var good = new Person { Name = "Lin" };
Console.WriteLine(good.Name); // Linrequired مع init
يتوافق required طبيعيًا مع init: يجب توفير القيمة أثناء الإنشاء، ولا يمكن تغييرها بعد ذلك.
using System;
class Config {
public required string Url { get; init; }
public int Timeout { get; init; } = 30;
}
var c = new Config { Url = "https://api" };
Console.WriteLine(c.Url + " " + c.Timeout); // https://api 30required مع set
يمكنكم أيضًا تحديد خاصية قابلة للتعيين على أنها required. يجب تهيئتها، لكن يمكن تغييرها لاحقًا.
using System;
class Box {
public required int Size { get; set; }
}
var b = new Box { Size = 5 };
b.Size = 10; // still mutable
Console.WriteLine(b.Size); // 10الحقول من نوع required
يمكن أن تكون الحقول من نوع required أيضًا، وليس الخصائص وحدها.
using System;
class Token {
public required string Value;
}
var t = new Token { Value = "abc123" };
Console.WriteLine(t.Value); // abc123المُنشئات و required
إذا عيّن مُنشئ عضوًا من نوع required، فلن يعود على المستدعين الذين يستخدمون هذا المُنشئ تعيينه. استخدموا [SetsRequiredMembers] لإبلاغ المترجم بذلك.
using System;
using System.Diagnostics.CodeAnalysis;
class Person {
public required string Name { get; init; }
[SetsRequiredMembers]
public Person(string name) => Name = name;
}
Console.WriteLine(new Person("Sam").Name); // Samمزج required والاختياري
الأعضاء التي تحددونها فقط تكون إلزامية؛ أما الأعضاء الأخرى فتبقى اختيارية مع قيمها الافتراضية.
using System;
class Account {
public required string Owner { get; init; }
public decimal Balance { get; init; } = 0m;
}
var a = new Account { Owner = "Kai" };
Console.WriteLine(a.Owner + " " + a.Balance); // Kai 0required في الوراثة
تُورث الأعضاء من نوع required. ويمكن للفئة المشتقة إضافة أعضائها الإلزامية، ويجب استيفاء جميع الأعضاء.
using System;
class Base { public required int Id { get; init; } }
class Item : Base { public required string Name { get; init; } }
var i = new Item { Id = 1, Name = "Pen" };
Console.WriteLine(i.Id + " " + i.Name); // 1 Penاستبدال المُنشئات الكبيرة
غالبًا ما يستبدل required + init المُنشئات الكبيرة؛ إذ تحصلون على أعضاء إلزامية مع صياغة مُهيِّئ كائن سهلة القراءة.
using System;
class Email {
public required string To { get; init; }
public required string Subject { get; init; }
public string Body { get; init; } = "";
}
var e = new Email { To = "a@b.com", Subject = "Hi" };
Console.WriteLine(e.To + " | " + e.Subject); // a@b.com | Hiتوضيح النية ذاتيًا
يوضّح تحديد الأعضاء على أنها required القيم الأساسية، مما يجعل استخدام النوع بطريقة صحيحة أسهل.
using System;
class Registration {
public required string Username { get; init; }
public required string Password { get; init; }
public bool Newsletter { get; init; }
}
var r = new Registration { Username = "ada", Password = "x" };
Console.WriteLine(r.Username); // adaتجميع المفاهيم
نوع يجمع بين الأعضاء الإلزامية والاختيارية والمتحقق منها.
using System;
class Server {
public required string Host { get; init; }
public int Port { get; init; } = 8080;
public string Address => Host + ":" + Port;
}
var s = new Server { Host = "localhost" };
Console.WriteLine(s.Address); // localhost:8080تحقق سريع
تحققوا مما يضمنه مُعدِّل required.
مراجعة
تعلّمتم مُعدِّل required.
- يفرض على المستدعين تهيئة العضو عند الإنشاء، ويتحقق المترجم من ذلك.
- يتوافق مع
initلإنشاء أعضاء إلزامية غير قابلة للتغيير. - يتيح
[SetsRequiredMembers]للمُنشئ استيفاء المتطلب. - تُورث الأعضاء من نوع required.
الأسئلة الشائعة
هل درس «المُعدِّل required» مجاني؟
نعم — نص درس «المُعدِّل required» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة C# Academy، انتقل إلى CoddyKit PRO. تتضمن دورة C# Academy 4 دروس في المجموع.
ماذا ستتعلم في «المُعدِّل required»؟
أجبِروا المستدعين على تعيين الخصائص الأساسية تتمرن على C# Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ C# Academy؟
لا تُشترط خبرة سابقة. C# Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 4.
كم من الوقت يستغرق درس «المُعدِّل required»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس C# Academy هذا؟
نعم. كل درس في C# Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- عوامل الضبط التي لا تعمل إلا مع init
- المُعدِّل required
- أنماط الكائنات غير القابلة للتغيير
- تعبيرات with في Records