انواع 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 نتواند خارج از دامنهی خودرو ایجاد شود.
struct Speed
مطمئن شوید که struct Speed نتواند خارج از دامنهی کلاس RemoteControlCar استفاده شود.
enum SpeedUnits
مطمئن شوید که enum SpeedUnits نتواند خارج از دامنهی کلاس RemoteControlCar استفاده شود.