none
Descobrir se 0 é diferente de 0 RRS feed

  • Pergunta

  • Quando criamos um objeto onde exista atributos do tipo inteiro, boolean, datetime, entre outros

    um valor default é setado, e gostaria de saber se temos como descobrir se o valor do atributo do objeto

    é o valor default ou o valor que eu setei segue um exemplo da minha duvida.

      class pessoa
        {
            public int id { get; set; }
            public int idade { get; set; }
            public string nome { get; set; }
            public string sobreNome { get; set; }
        }

      public static void Main() 

      {            

                pessoa p = new pessoa();
                p.id = 0;
                p.nome = "";
                if (p.id == p.idade)
                    Console.Write("0 == 0"); 

                if(p.nome.Equals(p.sobreNome) )
                    Console.Write("empty == empty"); 

      }

    Com o exemplo vamos ver que o atributo "id" que setei o valor 0 (zero) é igual ao atributo "idade" que não foi setado valor.

    Os atributos "String" não ocorre este problema pois não é setado um valor default portanto fica null;

    desde já agradeço.


    • Editado Edson Fiorese quinta-feira, 23 de fevereiro de 2012 13:01
    quinta-feira, 23 de fevereiro de 2012 12:59

Respostas

  • Olá Edson já que vc quer fazer uma simples comparação de valor default com um valor setado na sua propriedade, eu indico que crie sua classe de entidade como esta abaixo


      class pessoa
        {
            public int? id { get; set; }
            public int? idade { get; set; }
            public string? nome { get; set; }
            public string? sobreNome { get; set; }
        }

    Assim vc pode comparar se o valor é nulo que seria o valor padrão.

    Exp;

    pessoa objPessoa = new pessoa();

    if(objPessoa.id == null)

      Console.Write("id é nulo");

    else

      Console.Write("id = " + objPessoa.id.value.toString());

    • Marcado como Resposta Edson Fiorese quinta-feira, 23 de fevereiro de 2012 13:34
    quinta-feira, 23 de fevereiro de 2012 13:08

Todas as Respostas

  • Olá Edson já que vc quer fazer uma simples comparação de valor default com um valor setado na sua propriedade, eu indico que crie sua classe de entidade como esta abaixo


      class pessoa
        {
            public int? id { get; set; }
            public int? idade { get; set; }
            public string? nome { get; set; }
            public string? sobreNome { get; set; }
        }

    Assim vc pode comparar se o valor é nulo que seria o valor padrão.

    Exp;

    pessoa objPessoa = new pessoa();

    if(objPessoa.id == null)

      Console.Write("id é nulo");

    else

      Console.Write("id = " + objPessoa.id.value.toString());

    • Marcado como Resposta Edson Fiorese quinta-feira, 23 de fevereiro de 2012 13:34
    quinta-feira, 23 de fevereiro de 2012 13:08
  • Olá Edson
    Quando falamos de INT o valor default é 0, 


    no seu código vc declarou algumas variáveis com os seus respectivos tipos.
    como é default o INT está(ZERADO) sempre quando vc inicia um aplicação.
    Está comparação
     if (p.id == p.idade) sempre será verdadeira pois os valores vão sempre esta zerados, no caso de ums String ela já se inicia Nula no caso sem nenhum valor.




     class pessoa
        {
            public int id { get; set; }
            public int idade { get; set; }
            public string nome { get; set; }
            public string sobreNome { get; set; }
        }


      public static void Main() 


      {            


                pessoa p = new pessoa();
                p.id = 0;
                p.nome = "";
                if (p.id == p.idade)
                    Console.Write("0 == 0"); 


                if(p.nome.Equals(p.sobreNome) )
                    Console.Write("empty == empty"); 


      }

    Caso a resposta tenha ajudado favor marcar como respondida.

    • Sugerido como Resposta Renan Buzzi quinta-feira, 23 de fevereiro de 2012 15:57
    quinta-feira, 23 de fevereiro de 2012 13:17
  • Muito obrigado Romy Moura!

    com sua dica estou estudando um pouco sobre Nullable Types 

    quinta-feira, 23 de fevereiro de 2012 13:39