2
respostas

Public

Quando estávamos criando a classe. Havia sido dito que seria explicado o public que se coloca na frente das variáveis. Mas ainda não vi. Porque necessita colocar o Public na frente?

2 respostas

Quando a variável está com o Public na frente significa que ela será visível quando você instanciar esta classe como no exemplo abaixo, se estive sem o Public, você somente acessaria esta variavel dentro da própria classe.

var minhaClasse = new MinhaClasse();
 minhaClasse.VariavelPublica;

Boa tarde Jansen Carvalho Miotto.

Quando se programa orientado a objetos, como é o caso da linguagem C#, há a necessidade (por segurança) de se definir os tipos (nível de acessibilidade) dos Métodos e Atributos.

Pois bem, há diferentes tipos de acessibilidade com relação aos atributos, são eles:

Public ~ O acesso não é restrito.

Protected ~ O acesso é limitado à classe que os contém ou aos tipos derivados da classe que os contém.

Internal ~ O acesso é limitado ao assembly atual.

Protected internal ~ O acesso é limitado ao assembly atual ou aos tipos derivados da classe que os contém.

Private ~ O acesso é limitado ao tipo recipiente.

Private protected ~ O acesso é limitado à classe que o contém ou a tipos derivados da classe que o contém no assembly atual. Disponível desde o C# 7.2.

Os abordados nas aulas foram Public e Private. Atributos só podem ser acessados na Main (código principal) se forem do tipo Public, de outra forma não é possível acessá-los. Já os atributos do tipo Private só podem ser acessados internamente na classe.

EXEMPLO:

Classe:

namespace MyProgram
{
    public class MyExemple
    {
        public string name;
        private string _number;
    }
}

Fluxo de código principal:

using System;

namespace MyProgram
{
    internal class Program
    {
        public static void Main(string[] args)
        {
              var exemple = new MyExemple();
              Console.WriteLine(exemple.name);
              Console.WriteLine(exemple._number); /* Irá ocorrer um erro neste ponto */
        }
    }
}

Mais informações: https://docs.microsoft.com/pt-br/dotnet/csharp/language-reference/keywords/accessibility-levels

Espero ter ajudado!