Os tipos de C# podem ser definidos dentro do âmbito de uma classe ou de uma struct. O tipo que os envolve fornece uma espécie de espaço de nomes. O acesso ao tipo faz-se através do tipo que o envolve, com a sintaxe de ponto.
class Outer
{
public interface IInner {}
public enum EInner {}
public class CInner {}
public struct SInner {}
}
var outer = new Outer();
var inner = new Outer.CInner();
Podes definir níveis de acesso para os tipos internos.
Os membros privados do tipo exterior estão no âmbito dos membros do tipo interior, mas não o contrário.
Uns programadores "outros" têm estado a trabalhar no projeto do carro telecomandado remote-control-competition. Chamaram-te para vires limpar o código.
Refatora a classe RemoteControlCar para separares os métodos e as propriedades de telemetria, acedidos através de uma propriedade 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"
Garante que a instância Telemetry não pode ser criada fora do âmbito do carro.
Garante que a estrutura Speed não pode ser usada fora do âmbito da classe RemoteControlCar.
Garante que a enumeração SpeedUnits não pode ser usada fora do âmbito da classe RemoteControlCar.
Inscreve-te no Exercism para aprenderes e dominares C# com 62 conceitos178 exercícios, e mentoria humana real, tudo grátis.