Os tipos de C# podem ser definidos dentro do escopo de uma classe ou de uma struct. O tipo externo fornece uma espécie de namespace. O acesso ao tipo é feito por meio do tipo externo, 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();
Você pode definir níveis de acesso para tipos internos.
Membros privados do tipo externo estão no escopo dos membros do tipo interno, mas não vice-versa.
"Outros" desenvolvedores andam trabalhando no projeto do carrinho de controle remoto remote-control-competition. Chamaram você para limpar o código.
Refatore a classe RemoteControlCar para separar os métodos e as propriedades de telemetria, acessados por meio 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"
Garanta que a instância de Telemetry não possa ser criada fora do escopo do carrinho.
Garanta que a struct Speed não possa ser usada fora do escopo da classe RemoteControlCar.
Garanta que o enum SpeedUnits não possa ser usado fora do escopo da classe RemoteControlCar.
Crie sua conta no Exercism para aprender e dominar C# com 62 conceitos178 exercícios e mentoria humana de verdade, tudo de graça.