Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Dúvida sobre ToString

Então, observando o código abaixo:

object conta = new ContaCorrente(456, 45686);
Console.WriteLine(conta);

A saída do Console.WriteLine será : ByteBank.Modelos.ContaCorrente. Entendi que essa saída é devido ao WriteLine chamar o ToString quando recebe um tipo objeto e o ToString retorna essas informações. Porém neste outro caso:


string padrao = "[0-9]{4,5}-?[0-9]{4}";            
string textoDeTeste = "Me ligue para esse número 94568-4568";
Match resultado = Regex.Match(textoDeTeste, padrao);
Console.WriteLine(resultado);

A saída do WriteLine foi o número: 94568-4568.

Agora a minha dúvida: Porque neste caso a saída no WriteLine não foi algo semelhante ao primeiro caso, já que o WriteLine aqui também está chamando ToString. A saída não deveria ser algo semelhante? Tipo assim: "Regex.Match.Resultado?"

2 respostas
solução!

Icaro, tudo bom? Achei a sua lógica interessante, mas o funcionamento é um pouco diferente mesmo.

No segundo exemplo você está imprimindo um valor, por isso o resultado (string) daquilo que você modificou com o Regex.Match. Pense que nesse caso você imprimiu um parâmetro (valor) de um objeto.

No primeiro exemplo você tentou imprimir um objeto inteiro, por padrão você terá como retorno a identificação dele. Lembre que cada classe pode ter formas diferentes de implementar o ToString(), nesse caso você tem dois exemplos disso.

Em algum momento da vida você vai aprender sobrescrever um método para que ele "print" o que você quiser, da forma que você quiser. Olha o post abaixo para uma prévia.

https://github.com/dotnet/docs/blob/master/docs/csharp/programming-guide/classes-and-structs/how-to-override-the-tostring-method.md

Caso essa seja a resposta do seu problema, por favor, marque como solução. Assim ela sai da lista de questões sem solução do fórum.

Muito obrigado Ronald! Toda sua explicação foi muito boa, mas essa frase Lembre que cada classe pode ter formas diferentes de implementar o ToString(). Foi o que iluminou toda a dúvida kkkk... Realmente, a classe Match deriva da classe Capture e essa classe tem um override no ToString que retorna o value.