Подтвердить что ты не робот

Создать динамическое имя переменной

Можно ли создать динамическую переменную в С#?

Я знаю, что мой код ниже порождает ошибку и очень плохое кодирование. Но этот код имеет небольшую логику, например создание динамической переменной

var name=0;
for(i=0;i<10;i++)// 10 means grid length
{
    name+i=i;
}

var xx1=name1;
var xx2=name2;
var xx3=name3;

Возможно ли это в С#? Создать динамическую переменную в С#? и изменить имя переменной в С#? и объединить имя переменной в С# (например, мы можем конкатенировать любой идентификатор или имя элемента управления)...

Почему мне нужно имя динамической переменной (сценарий):

var variablename=""
var variablename0=No;
var variablename1=Yes;
var variablename2=No;

. , .

У меня есть gridview с несколькими строками. И мне нужно назначить переменную стороне сервера для каждой строки. Поэтому мне нужно множество переменных на стороне сервера. я могу установить только Text=<%# variablename+rowCount%> для каждого поля шаблона.

Этот rowCount означает каждый индекс строки сетки.

Если сетка имеет 2 строки, то rowCount значения равны 0,1,2

Теперь мне нужно динамически менять variablename на variablename0,variablename1,variablename2 для отдельной строки.

4b9b3361

Ответ 1

С# строго типизирован, поэтому вы не можете динамически создавать переменные. Вы можете использовать массив, но лучше использовать С# для использования Словаря следующим образом. Подробнее о С# словарях здесь.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace QuickTest
{
    class Program
    {
        static void Main(string[] args)
        {
            Dictionary<string, int> names = new Dictionary<string,int>();


            for (int i = 0; i < 10; i++)
            {
                names.Add(String.Format("name{0}", i.ToString()), i);
            }

            var xx1 = names["name1"];
            var xx2 = names["name2"];
            var xx3 = names["name3"];
        }
    }
}

Ответ 2

Нет. Это невозможно. Вместо этого вы должны использовать массив:

name[i] = i;

В этом случае ваш name+i - name[i].

Ответ 4

попробуйте этот, пользователь json для сериализации и десериализации:

 using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Web.Script.Serialization;

    namespace ConsoleApplication1
    {
       public class Program
       {
          static void Main(string[] args)
          {
              object newobj = new object();

              for (int i = 0; i < 10; i++)
              {
                List<int> temp = new List<int>();

                temp.Add(i);
                temp.Add(i + 1);

                 newobj = newobj.AddNewField("item_" + i.ToString(), temp.ToArray());
              }

         }

     }

      public static class DynamicExtention
      {
          public static object AddNewField(this object obj, string key, object value)
          {
              JavaScriptSerializer js = new JavaScriptSerializer();

              string data = js.Serialize(obj);

              string newPrametr = "\"" + key + "\":" + js.Serialize(value);

              if (data.Length == 2)
             {
                 data = data.Insert(1, newPrametr);
              }
            else
              {
                  data = data.Insert(data.Length-1, ","+newPrametr);
              }

              return js.DeserializeObject(data);
          }
      }
   }

Ответ 5

Переменные имена должны быть известны во время компиляции. Если вы планируете заполнять эти имена динамически во время выполнения, вы можете использовать List<T>

 var variables = List<Variable>();
 variables.Add(new Variable { Name = inputStr1 });
 variables.Add(new Variable { Name = inputStr2 });

здесь входная строка может быть любым текстом или любым списком