Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Contando caracteres

Para essa situação, o método Count() do LINQ também poderia ser utilizado, mas, como método de manipulação de strings, o Length é o mais adequado.

Console.Write("Digite uma frase: ");
string frase = Console.ReadLine()!;
int tamanhoFrase = frase.Length;

Console.WriteLine($"A frase contém: {tamanhoFrase} caracteres.");
1 resposta
solução!

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:

  1. Tratar a string como uma coleção genérica de caracteres (IEnumerable<char>).
  2. 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.
  3. 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!