مساحات الأسماء طريقة لتجميع الكود المرتبط ببعضه ولتجنّب تعارض الأسماء، وهي موجودة عمومًا في كل قواعد الكود باستثناء أبسطها.
الصيغة كالتالي:
namespace MyNameSpace
{
public class MyClass {}
public class OtherClass {}
}
الأنواع المُضمَّنة داخل مساحات الأسماء يُشار إليها من خارج نطاق مساحة الأسماء بإضافة بادئة إلى اسم النوع باستخدام صيغة النقطة. وبدلًا من ذلك، وفي الغالب الأعم، يمكنك وضع توجيه using في أعلى الملف (أو داخل مساحة الأسماء) ليُستخدم النوع بدون بادئة. وداخل مساحة الأسماء نفسها، لا حاجة لتأهيل أسماء الأنواع.
namespace MySpace
{
public class MyClass {}
public class Foo
{
public void Bar()
{
var baz = new MyClass();
}
}
}
public class Qux
{
public void Box()
{
var nux = new MySpace.MyClass();
}
}
namespace OtherSpace
{
using MySpace;
public class Tix
{
public void Jeg()
{
var lor = new MyClass();
}
}
}
يمكنك إنشاء اسم مستعار لمساحة الأسماء بالصيغة using MyAlias = MySpace; ثم استخدام هذا الاسم المستعار في أي موضع يمكن فيه استخدام مساحة الأسماء.
بدأت الإدارة تطبّق مبادئ داروينية على مشروع سيارة التحكم عن بُعد remote-control-competition. وقد قُسّم المطوّرون إلى فريقين، Red و_Blue_، ويُطلب من كل منهما تحسين التصميم بشكل مستقل عن الآخر. ولا حاجة بهم إلى الانشغال بقرارات التصميم التي يتخذها الفريق الآخر.
طُلب منك إلقاء نظرة على الكود لترى أفضل أسلوب للجمع بين جهود الفريقين لأغراض الاختبار.
من فضلك استخدم namespaces للتعبير عن الغرض من الكود بشكل أفضل.
حاليًا، الأنواع المهمة مثل Motor وTelemetry، ناهيك عن RemoteControlCar نفسه، متداخلة داخل صنف ثابت محيط، <Color>RemoteControlCarTeam. والغرض الوحيد من الصنف المحيط هو السماح لأنواع تحمل الاسم نفسه بأن تتعايش في البرنامج. ويُعبّر عن ذلك بشكل أفضل باستخدام فضاء الأسماء. سترى في التمرين التالي أنّ لـnamespace مزايا على static class في هذه الأغراض.
بينما تُصرّ الإدارة على أن تُسمّى الفرق RedRemoteControlCarTeam وBlueRemoteControlCarTeam في التعريفات، فإن هذه الأسماء مرهقة إلى حد ما عند الإشارة إلى الفرق. ابحث عن أسلوب لاستخدام المعرّفات الأقصر Red وBlue عند بناء السيارات.
سجّل في Exercism لتتعلّم وتتقن C# عبر 62 مفهومًا178 تمرينًا، وإرشاد بشري حقيقي، وكل ذلك مجانًا.