يمكن تعريف أنواع C# ضمن نطاق صنف أو بنية. يوفّر النوع الحاوي نوعًا من مساحة الأسماء. يتم الوصول إلى النوع عبر النوع الحاوي باستخدام صيغة النقطة.
class Outer
{
public interface IInner {}
public enum EInner {}
public class CInner {}
public struct SInner {}
}
var outer = new Outer();
var inner = new Outer.CInner();
يمكنك تحديد مستويات الوصول للأنواع الداخلية.
تكون أعضاء النوع الخارجي الخاصة ضمن نطاق أعضاء النوع الداخلي، ولكن ليس العكس.
عمل بعض المطورين "الآخرين" على مشروع السيارة ذات التحكم عن بُعد remote-control-competition. وقد استُدعيتَ لتنظيف الكود.
أعد هيكلة صنف RemoteControlCar بحيث تفصل دوال القياس عن بُعد وخصائصه، وتجعل الوصول إليها عبر خاصية Telemetry.
var car = new RemoteControlCar();
car.Telemetry.Calibrate();
car.Telemetry.SelfTest();
car.Telemetry.ShowSponsor("Walker Industries Inc.");
car.CurrentSponsor
// => "Walker Industries Inc."
car.Telemetry.SetSpeed(100, "cps");
car.GetSpeed()
// => "100 centimeters per second"
Telemetry
تأكد من أنه لا يمكن إنشاء نسخة Telemetry خارج نطاق السيارة.
Speed
تأكد من أنه لا يمكن استخدام بنية Speed خارج نطاق صنف RemoteControlCar.
SpeedUnits
تأكد من أنه لا يمكن استخدام تعداد SpeedUnits خارج نطاق صنف RemoteControlCar.
سجّل في Exercism لتتعلّم وتتقن C# عبر 62 مفهومًا178 تمرينًا، وإرشاد بشري حقيقي، وكل ذلك مجانًا.