none
Diferenca Field, Property e Variable RRS feed

  • Pergunta

  • Dentro da classe, eu posso setar variaveis, propriedades e fields.

    class MyClass {

        int MyField1;

        int MyField2 { get; set; }

    No entanto, eu ainda nao entendi se o intMyField1 eh um field ou uma variavel.
    Field e variavel eh a mesma coisa neste contexto ?

    terça-feira, 27 de junho de 2017 03:09

Respostas

  • Olá!

       Neste caso, MyField1 é um field. Mas você também pode encapsulá-lo em uma propriedade. Leia este artigo do Macoratti, pois é bem didático. Para você entender melhor isto, pense no escopo em que o objeto está envolvido. Por exemplo, fields e propriedades podem ser acessados de qualquer membro da classe (métodos, eventos, outra propriedade) e até mesmo de outra classe, conforme a sua definição de visibilidade (private, public, internal). Já as variáveis, estas estão limitadas ao escopo do membro da classe, e sendo mais específico ainda, são limitadas ao escopo da instrução onde foram declaradas, ou seja, se a variável for declarada dentro de uma instrução if, ela será visível apenas dentro desta instrução, e não será acessível/visível fora dela. Espero que ajude.

    Bom trabalho!

    terça-feira, 27 de junho de 2017 12:12
  • mas se eu vejo:

    int MyVariavel; 
    int MyField;

    Parece que ambos, o field e a variavel sao a mesma coisa.
    Nao sao ?

    É a mesma coisa. O field é uma variável. Uma propriedade é uma estrutura de dois métodos (get e set).

    Aqui está a definição formal:

    https://docs.microsoft.com/pt-br/dotnet/csharp/programming-guide/classes-and-structs/fields

    "Um campo (field) é uma variável de qualquer tipo que é declarada diretamente em uma classe ou struct. Os campos são membros do tipo que os contém."

    "Em geral, você só deve usar campos para variáveis que têm acessibilidade particular ou protegida. Os dados que a classe expõe para o código de cliente devem ser fornecidos por meio de métodos, propriedades e indexadores."

    att


    William John Adam Trindade
    Analyste-programmeur


    Sogi Informatique ltée
    If you found this post helpful, please "Vote as Helpful". If it actually answered your question, remember to "Mark as Answer". Se achou este post útil, por favor clique em "Votar como útil". Se por acaso respondeu sua dúvida, lembre de "Marcar como Resposta".


    terça-feira, 27 de junho de 2017 14:29
    Moderador

Todas as Respostas

  • Olá!

       Neste caso, MyField1 é um field. Mas você também pode encapsulá-lo em uma propriedade. Leia este artigo do Macoratti, pois é bem didático. Para você entender melhor isto, pense no escopo em que o objeto está envolvido. Por exemplo, fields e propriedades podem ser acessados de qualquer membro da classe (métodos, eventos, outra propriedade) e até mesmo de outra classe, conforme a sua definição de visibilidade (private, public, internal). Já as variáveis, estas estão limitadas ao escopo do membro da classe, e sendo mais específico ainda, são limitadas ao escopo da instrução onde foram declaradas, ou seja, se a variável for declarada dentro de uma instrução if, ela será visível apenas dentro desta instrução, e não será acessível/visível fora dela. Espero que ajude.

    Bom trabalho!

    terça-feira, 27 de junho de 2017 12:12
  • mas se eu vejo:

    int MyVariavel; 
    int MyField;

    Parece que ambos, o field e a variavel sao a mesma coisa.
    Nao sao ?

    terça-feira, 27 de junho de 2017 14:14
  • mas se eu vejo:

    int MyVariavel; 
    int MyField;

    Parece que ambos, o field e a variavel sao a mesma coisa.
    Nao sao ?

    É a mesma coisa. O field é uma variável. Uma propriedade é uma estrutura de dois métodos (get e set).

    Aqui está a definição formal:

    https://docs.microsoft.com/pt-br/dotnet/csharp/programming-guide/classes-and-structs/fields

    "Um campo (field) é uma variável de qualquer tipo que é declarada diretamente em uma classe ou struct. Os campos são membros do tipo que os contém."

    "Em geral, você só deve usar campos para variáveis que têm acessibilidade particular ou protegida. Os dados que a classe expõe para o código de cliente devem ser fornecidos por meio de métodos, propriedades e indexadores."

    att


    William John Adam Trindade
    Analyste-programmeur


    Sogi Informatique ltée
    If you found this post helpful, please "Vote as Helpful". If it actually answered your question, remember to "Mark as Answer". Se achou este post útil, por favor clique em "Votar como útil". Se por acaso respondeu sua dúvida, lembre de "Marcar como Resposta".


    terça-feira, 27 de junho de 2017 14:29
    Moderador