none
Valores nulos

    Question

  • Galera tenho um método onde passo como parametro um Int, porem preciso passar null pois as vezes não tenho valor, como posso fazer ?

    Obrigado


    SirSmart

    Monday, January 21, 2013 1:54 PM

Answers

  • Você pode definir seu parametro sendo um Nullable:

    public void Method(Nullable<int> parametro){
        if(parametro.HasValue){
            var value = parametro.Value
        }
    }

    ou usar uma forma simplificada:

    public void Method(int? parametro){
        if(parametro.HasValue){
            var value = parametro.Value
        }
    }


    http://www.linkedin.com/pub/murilo-kunze/44/191/455

    Monday, January 21, 2013 2:22 PM

  • Pode usar tipo anuláveis, abaixo tem uns links sobre:

    http://msdn.microsoft.com/pt-br/library/1t3y8s4s%28v=vs.90%29.aspx

    http://www.macoratti.net/11/03/c_ntp.htm

    A grosso modo, inserindo um sinal de interrogação (?) após o tipo na declaração do parâmetro você o torna anulável.

    Exemplo:

    public int GetById(int? id) { }

    Nesse caso o parâmetro id aceitará valores nulos. Para saber se o parâmetro possui valor ou não, você usará a propriedade HasValue do objeto, se esse método retornar True, então o valor estará na propriedade Value.

    Exemplo:

    public int GetById(int? i)
    {
      if (i.HasValue)
        return i.Value;
      else
        return 0;
    }
    Qualquer dúvida é só postar por aqui. Abraços!



    Alexsandre Rodrigues de Almeida - MCTS .NET Framework - Web Applications
    E-mail: alexsandrer@gmail.com
    Twitter: @AlexRAlmeida

    Monday, January 21, 2013 2:33 PM
  • Olá,

    Achei isso no stackoverflow:

    Yes. There are two kinds of types in .NET: reference types and value types.

    References types (generally classes) are always referred to by references, so they support null without any extra work. This means that if a variable's type is a reference type, the variable is automatically a reference.

    Value types (e.g. int) by default do not have a concept of null. However, there is a wrapper for them called Nullable. This enables you to encapsulate the non-nullable value type and include null information.

    The usage is slightly different, though.

    // Both of these types mean the same thing, the ? is just C# shorthand.
    private void Example(int? arg1, Nullable<int> arg2)
    {
        if (arg1.HasValue)
            DoSomething();
    
        arg1 = null; // Valid.
        arg1 = 123;  // Also valid.
    
        DoSomethingWithInt(arg1); // NOT valid!
        DoSomethingWithInt(arg1.Value); // Valid.
    }

    Traduzindo:

    Sim, no .Net Framework temos os Tipos por Referencia e os Tipos por Valor.

    Tipos por Referência(Geralmente classes) não contem valor, mas sim uma referencia para o local da memória onde está o valor, portanto eles suportam valores nulos sem que seja necessário mais nada. Isso quer dizer que se o tipo de uma variável é um tipo por referência a variável é automaticamente apenas uma referência.

    Tipos por Valor (Como o int) por padrão não possuem o conceito de nulo. De qualquer forma, o código abaixo lhe permite implementar o conceito de valor nulo a um tipo por valor.

    Passing null arguments to C# methods


    Herbert Lausmann

    Gerenciador de Logins

    Monday, January 21, 2013 2:44 PM

All replies

  • Você pode definir seu parametro sendo um Nullable:

    public void Method(Nullable<int> parametro){
        if(parametro.HasValue){
            var value = parametro.Value
        }
    }

    ou usar uma forma simplificada:

    public void Method(int? parametro){
        if(parametro.HasValue){
            var value = parametro.Value
        }
    }


    http://www.linkedin.com/pub/murilo-kunze/44/191/455

    Monday, January 21, 2013 2:22 PM

  • Pode usar tipo anuláveis, abaixo tem uns links sobre:

    http://msdn.microsoft.com/pt-br/library/1t3y8s4s%28v=vs.90%29.aspx

    http://www.macoratti.net/11/03/c_ntp.htm

    A grosso modo, inserindo um sinal de interrogação (?) após o tipo na declaração do parâmetro você o torna anulável.

    Exemplo:

    public int GetById(int? id) { }

    Nesse caso o parâmetro id aceitará valores nulos. Para saber se o parâmetro possui valor ou não, você usará a propriedade HasValue do objeto, se esse método retornar True, então o valor estará na propriedade Value.

    Exemplo:

    public int GetById(int? i)
    {
      if (i.HasValue)
        return i.Value;
      else
        return 0;
    }
    Qualquer dúvida é só postar por aqui. Abraços!



    Alexsandre Rodrigues de Almeida - MCTS .NET Framework - Web Applications
    E-mail: alexsandrer@gmail.com
    Twitter: @AlexRAlmeida

    Monday, January 21, 2013 2:33 PM
  • Olá,

    Achei isso no stackoverflow:

    Yes. There are two kinds of types in .NET: reference types and value types.

    References types (generally classes) are always referred to by references, so they support null without any extra work. This means that if a variable's type is a reference type, the variable is automatically a reference.

    Value types (e.g. int) by default do not have a concept of null. However, there is a wrapper for them called Nullable. This enables you to encapsulate the non-nullable value type and include null information.

    The usage is slightly different, though.

    // Both of these types mean the same thing, the ? is just C# shorthand.
    private void Example(int? arg1, Nullable<int> arg2)
    {
        if (arg1.HasValue)
            DoSomething();
    
        arg1 = null; // Valid.
        arg1 = 123;  // Also valid.
    
        DoSomethingWithInt(arg1); // NOT valid!
        DoSomethingWithInt(arg1.Value); // Valid.
    }

    Traduzindo:

    Sim, no .Net Framework temos os Tipos por Referencia e os Tipos por Valor.

    Tipos por Referência(Geralmente classes) não contem valor, mas sim uma referencia para o local da memória onde está o valor, portanto eles suportam valores nulos sem que seja necessário mais nada. Isso quer dizer que se o tipo de uma variável é um tipo por referência a variável é automaticamente apenas uma referência.

    Tipos por Valor (Como o int) por padrão não possuem o conceito de nulo. De qualquer forma, o código abaixo lhe permite implementar o conceito de valor nulo a um tipo por valor.

    Passing null arguments to C# methods


    Herbert Lausmann

    Gerenciador de Logins

    Monday, January 21, 2013 2:44 PM