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實例無法在車子的作用域之外建立。
確保Speed結構無法在RemoteControlCar類別的作用域之外使用。
確保SpeedUnits列舉無法在RemoteControlCar類別的作用域之外使用。