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

private, public static

Eae, fellows

Minha dúvida é um pouco fora do tema da aula, mas eu queria entender que diferença faz usar o modificador de visibilidade public no método TestaDivisao(int divisor) e private na função Dividir(int numero, int divisor).

Já que não estamos trabalhando dentro de classes não poderíamos deixar simplesmente static em tudo?

static void Main(string[] args)
       {
        try
        {
                Metodo();
        }
        catch(NullReferenceException erro)
        {
                Console.WriteLine(erro.StackTrace);
                Console.WriteLine("Aconteceu um erro!");
        }

        Console.ReadLine();
    }
    //Teste com a cadeia de chamada:
    //Metodo -> TestaDivisao -> Dividir
        private static void Metodo()
        {
                TestaDivisao(2);
        }

        **public** static void TestaDivisao(int divisor)
    {
        try
        {
                int resultado = Dividir(10, divisor);
                Console.WriteLine("Resultado da divisão de 10 por " + " é " + resultado);
        }
        catch(DivideByZeroException erro)
        {
                Console.WriteLine(erro.Message);
                Console.WriteLine(erro.StackTrace);
                Console.WriteLine("Não é possível fazer uma divisão por 0!");
        }
    }

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

obrigadom

3 respostas

Olá Ley, tudo bem?

Este ponto é realmente questão da visibilidade da classe e dos métodos. O uso do static quer dizer que o método pode ser usado sem instanciar um objeto da classe.

Em momento nenhum instanciamos a classe Console, mas podemos usar Console.WriteLine() sem se preocupar com isso, porque é uma classe e um método estático.

Agora a diferença entre o public e o private é questão de em qual classe esse método poderá ser usado. public pode ser usado em qualquer classe, esse método tem um uso como o Console.WriteLine(), e public você restringe a usar o método apenas dentro da classe que você escreveu ele.

Espero ter ajudado!

Eae, fabiano. Tô bem, e vc? Obrigado pela resposta.

Mas assim, minha dúvida foi mais no sentido de querer saber o pq do professor ter usado esses modificadores.

Todos os métodos foram declarados dentro da classe Program e só foram usados dentro dessa classe. E já que é assim, tanto faz usar private ou public, certo? Mas ele só deixou o método TestaDivisao(int divisor) como público e os outros 2 métodos como private

solução!

Na verdade ainda assim tem diferença. Se criar uma outra classe, esse código público pode ser executado nessa nova classe. Se adicionar um projeto na solução, esse novo projeto inteiro pode executar esse código público.

Essa é a grande diferença. Onde você deseja que o código deve ser executado? Essa é a real intensão por trás de tudo.