2
respostas

No exercicio https://cursos.alura.com.br/course/csharp-parte-4-excecoes/task/40771

Está ocorrendo um erro de compilação: O nome metodo não existe no contexto atual, não estou conseguindo dar prosseguimento ao exercício.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace MAO_NA_MASSA
{
    class Program
    {
        static void Main(string[] args)
        {
            metodo();

        }
    }
}

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace MAO_NA_MASSA
{
    public class ContaCorrente
    {


        public static int Dividir(int numero, int divisor) { return numero / divisor; }

        static void Metodo()
        {
            TestaDivisao(0);
        }

        static void TestaDivisao(int divisor)
        {
            Dividir(10, divisor);
        }
2 respostas

Eu acho que é porque você não declarou a "visibilidade" dos métodos "Método" e "TestaDivisão", eles não deveriam ser public, private ou protected?

Olá, Edivaldo. Como vai você?

No arquivo Program.cs você tem:

class Program
{
    static void Main(string[] args)
    {
        metodo();
    }
}

Com a chamada metodo() você não está indicando o nome da classe ou de uma referência onde este método está. Desta forma, o método metodo deve existir na classe Program.

Como vemos no código destacado acima, a classe Program não possui um método chamado metodo e a mensagem de erro faz sentido.

Mas, você definiu este método sim! Ele está na classe ContaCorrente. Então, no seu código, será necessário instanciar um novo objeto do tipo ContaCorrente e acessar o método metodo através da referência.

De qualquer maneira, a proposta do exercício é que você crie os métodos Metodo, TestaDivisao e Dividir dentro da classe Program. Algo como:

class Program
{
    static void Main(string[] args)
    {
        Metodo();
    }

    static void Metodo()
    {
        TestaDivisao(0);
    }

    static void TestaDivisao(int divisor)
    {
        Dividir(10, divisor);
    }

    static int Dividir(int numero, int divisor)
    {
        ContaCorrente conta = null;
        Console.WriteLine(conta.Saldo);
        return numero / divisor;
    }
}

O que você acha? Resolvi sua dúvida?

guilhermectroncon, boa sugestão! Mas é possível sim criar um método sem um modificador de acesso. Sem modificador de acesso, o compilador assume que o método é private.

Abs e bons estudos.