Olá, Diego. Como vai?
O seu código ficou perfeito! Direto, limpo e utilizando exatamente a propriedade correta para o cenário. A sua reflexão teórica no início do post foi cirúrgica e demonstra uma excelente maturidade no desenvolvimento de software.
Você tocou em um ponto fundamental da arquitetura do .NET: a diferença entre a propriedade nativa .Length e o método de extensão .Count() do LINQ.
Para enriquecer ainda mais o seu tópico e validar a sua linha de raciocínio, vale a pena detalhar o porquê de a sua escolha ter sido a melhor em termos de performance e boas práticas:
Por que o .Length é mais adequado aqui?
Em C#, uma string é, por baixo dos panos, uma sequência indexada de caracteres armazenada na memória de forma contígua. A propriedade .Length não faz uma varredura na frase para contar letra por letra; ela simplesmente acessa um metadado que o .NET já guardou sobre o tamanho daquela string no momento em que ela foi criada. A complexidade dessa operação é constante, conhecida na computação como $O(1)$ (uma das mais rápidas possíveis).
E o que o .Count() faria diferente?
O método .Count() pertence ao namespace System.Linq e foi desenhado para trabalhar de forma genérica sobre qualquer coleção de dados (IEnumerable<T>).
Se você utilizasse o frase.Count(), a engine do LINQ precisaria:
- Tratar a string como uma coleção genérica de caracteres (
IEnumerable<char>). - Alocar recursos na memória para iterar (percorrer) essa coleção do início ao fim, contando os caracteres um por um em um laço interno.
- Isso resulta em uma complexidade de tempo linear, ou $O(n)$, onde o tempo de execução cresce de acordo com o tamanho da frase.
Para visualizar como essa diferença se comporta nos bastidores do computador, imagine o seguinte fluxo de processamento na memória:
Embora para frases curtas digitadas no console a diferença de tempo seja imperceptível ao olho humano, adotar o .Length evita desperdício de memória e processamento desnecessário, o que faz toda a diferença quando seu software precisar processar milhares de textos simultaneamente em um servidor.
Parabéns pela excelente solução e pela ótima fundamentação técnica!
Espero que possa ter lhe ajudado!