none
Nome Dinâmico RRS feed

  • Pergunta

  • É possível criar um nome dinâmico? Tipo esto:

    int x=1;
    string qualquer_nome_dinamico = string.concat("Lista _",x.ToString);
    
    List<T> qualquer_nome_dinamico = new List<T>;

    Dá?

    Obrigado.

    sábado, 17 de maio de 2014 13:44

Respostas

  • Entendi, desse jeito você não vai conseguir mesmo, se você utilizar o ExpandoObject é possível criar uma propriedade dinâmica, mas a variável com nome dinâmico não é possível, pois C# é fortemente tipado, nem vai compilar.

    Exemplo do Expando Object: 

        dynamic dynamicVar = new ExpandoObject();
    
                dynamicVar.Valor1 = new { };

    Abraço

    • Marcado como Resposta Diogo_André sábado, 17 de maio de 2014 20:33
    sábado, 17 de maio de 2014 19:45

Todas as Respostas

  • Olá Diogo!

    Para nomes dinâmicos você pode utilizar um Dictionary, onde você deve passar uma chave e um valor. 

    //Criando um Dictionary que vai ter uma chave do tipo String, e o valor String também.

    Dictionary<string, string> names = new Dictionary<string, string>();

    // Adiciona valores ao meu dictionary names.Add("Chave1", "Valor1"); names.Add("Chave2", "Valor2"); names.Add("Chave3", "Valor3");

    //Lê os valores var v1 = names["Chave1"]; var v2 = names["Chave2"]; var v3 = names["Chave3"]; Console.WriteLine("{0} - {1} - {2}", v1, v2, v3);


    Espero que tenha ajudado, abraços. 

    sábado, 17 de maio de 2014 15:31
  • Assim?

    Dictionary<string, string> names = new Dictionary<string, string>(); 
                names.Add("asd", "Valor1");
                List<Produto> names["asd"] = new List<Produto>

    Da erro :S

    sábado, 17 de maio de 2014 18:18
  • Entendi, desse jeito você não vai conseguir mesmo, se você utilizar o ExpandoObject é possível criar uma propriedade dinâmica, mas a variável com nome dinâmico não é possível, pois C# é fortemente tipado, nem vai compilar.

    Exemplo do Expando Object: 

        dynamic dynamicVar = new ExpandoObject();
    
                dynamicVar.Valor1 = new { };

    Abraço

    • Marcado como Resposta Diogo_André sábado, 17 de maio de 2014 20:33
    sábado, 17 de maio de 2014 19:45
  • Pois, bem me parecia. 

    Obrigado na mesma!

    sábado, 17 de maio de 2014 20:34