Letra D não deu erro nos meus testes conforme solução da questão. Gostaria de entender melhor o que aconteceu
Letra D não deu erro nos meus testes conforme solução da questão. Gostaria de entender melhor o que aconteceu
Boa tarde, Leandro.
Segue abaixo um código que implementa a opção D. Copie e cole-o do jeito que está e execute o programa. Você pode usar algum editor online, como o https://dotnetfiddle.net/
Você notará que sua IDE, ou editor online como citei acima, lhe dará o seguinte erro:
Compilation error (line 10, col 29): 'string' does not contain a definition for 'EhCEPValido'
E por que este erro ocorre? Porque na definição do método de extensão não foi informado a palavra chave this no parâmetro. É essa palavra que instrui ao compilador que trata-se de um método de extensão.
Então precisamos corrigir isto: public static bool EhCEPValido(string str)
Por isso: public static bool EhCEPValido(this string str)
Quando o compilador ver essa palavra chave this, irá entender que você quer declarar um método de extensão para o tipo string.
Espero ter ajudado :D
using System;
using System.Text.RegularExpressions;
namespace Exercise11
{
public class ExtensionMethods
{
public static void Main(string[] args)
{
Console.WriteLine(string.EhCEPValido("teste"));
}
}
public static class EnderecoExtensions
{
public static bool EhCEPValido(string str)
{
var regex = new Regex(@"^\d{5}-\d{3}$");
return regex.IsMatch(str);
}
}
}
Legal, obrigado pela resposta