none
Variavel local invalida RRS feed

  • Pergunta

  • Pessoal,

    Estou lendo o retorno de um XML so que quando vou atribuir o valor dos nós pra minhas variaveis da o seguinte erro:
    "Use of unassigned local variable 'rIdioma'.

    Antes eu estava tentando jogar o valor dos Nós diretamente no objeto, mas nao deu.
    Entao criei as variaveis apenas pra depois jogar seus valores nos objetos.

    -----------------

    string rIdioma, rDescricao;

    RetornoCurso retorno = null

    var q = from b in docRetorno.Descendants("curso")
    select new
     {
            rIdioma = b2.Element("idioma").Value,
            rDescricao = b2.Element("descricao").Value,
     };

    retorno.Idioma = rIdioma;
    retorno.Descricao = rDescricao;

    Pq esse erro esta ocorrendo se eu declaro a variavel fora do Linq ?                       

    segunda-feira, 25 de junho de 2012 04:36

Respostas

  • é só atribuir um valor inicial para a sua variável 
    rIdioma = "";
    Isto acontece por que String é um Referencial Type e ele precisa ser iniciado previamente para poder ser atribuído  a outra referencia.

    Olavo Oliveira Neto
    http://olavooneto.wordpress.com
    Twitter @Olavooneto
    Facebook Olavo Neto
    Linkedin Olavo Neto
    Se for útil marque como resposta e faça um Developer feliz :)

    • Marcado como Resposta AGA Neto quarta-feira, 27 de junho de 2012 22:20
    segunda-feira, 25 de junho de 2012 11:14
    Moderador
  • Olá AGA,

    Tudo beleza?

    O colega Olavo esta correto. No código que vc postou anteriormente vc não esta fazendo a atribuição.

    Nas queries LINQ vc não pode fazer a atribuição do modo como esta no exemplo, pois no caso vc esta criando um tipo anônimo com colunas de nome rIdioma e rDescricao, sua código deveria ficar assim:

    string rIdioma = String.empty; 
    string rDescricao = String.empty;
    
    RetornoCurso retorno = null
     
    var q = from b in docRetorno.Descendants("curso")
     select new
      {
             Idioma = b2.Element("idioma").Value,
             Descricao = b2.Element("descricao").Value,
      }.FirstOrDefault();
     
    if (q != null)
    {
    rIdioma = q.Idioma;
    rDescricao = q.Descricao;
    }
    
    retorno.Idioma = rIdioma;
    retorno.Descricao = rDescricao;
    

    []s!

    Fernando Henrique Inocêncio Borba Ferreira
    while(alive){ this.WriteCode(); }
    Blog: http://ferhenriquef.com/
    Twitter: @ferhenrique
    Entity Framework - Brasil: https://www.facebook.com/EntityFrameworkBrasil

    • Marcado como Resposta AGA Neto quarta-feira, 27 de junho de 2012 22:21
    segunda-feira, 25 de junho de 2012 22:25
    Moderador

Todas as Respostas

  • é só atribuir um valor inicial para a sua variável 
    rIdioma = "";
    Isto acontece por que String é um Referencial Type e ele precisa ser iniciado previamente para poder ser atribuído  a outra referencia.

    Olavo Oliveira Neto
    http://olavooneto.wordpress.com
    Twitter @Olavooneto
    Facebook Olavo Neto
    Linkedin Olavo Neto
    Se for útil marque como resposta e faça um Developer feliz :)

    • Marcado como Resposta AGA Neto quarta-feira, 27 de junho de 2012 22:20
    segunda-feira, 25 de junho de 2012 11:14
    Moderador
  • Mas eu tinha atribuido string.Empty para ela. isso nao adiantaria ?

    E pq nao consigo atribuir o valor para um objeto dentro do linq ?

    segunda-feira, 25 de junho de 2012 16:04
  • Olá AGA,

    Tudo beleza?

    O colega Olavo esta correto. No código que vc postou anteriormente vc não esta fazendo a atribuição.

    Nas queries LINQ vc não pode fazer a atribuição do modo como esta no exemplo, pois no caso vc esta criando um tipo anônimo com colunas de nome rIdioma e rDescricao, sua código deveria ficar assim:

    string rIdioma = String.empty; 
    string rDescricao = String.empty;
    
    RetornoCurso retorno = null
     
    var q = from b in docRetorno.Descendants("curso")
     select new
      {
             Idioma = b2.Element("idioma").Value,
             Descricao = b2.Element("descricao").Value,
      }.FirstOrDefault();
     
    if (q != null)
    {
    rIdioma = q.Idioma;
    rDescricao = q.Descricao;
    }
    
    retorno.Idioma = rIdioma;
    retorno.Descricao = rDescricao;
    

    []s!

    Fernando Henrique Inocêncio Borba Ferreira
    while(alive){ this.WriteCode(); }
    Blog: http://ferhenriquef.com/
    Twitter: @ferhenrique
    Entity Framework - Brasil: https://www.facebook.com/EntityFrameworkBrasil

    • Marcado como Resposta AGA Neto quarta-feira, 27 de junho de 2012 22:21
    segunda-feira, 25 de junho de 2012 22:25
    Moderador