Как создать переменные с динамическими именами в C #? - PullRequest
1 голос
/ 18 июля 2009

Я хочу создать переменную в цикле for, например,

for(int i; i<=10;i++)
{
    string s+i = "abc";
}

Это должно создать переменные от s0, s1, s2 ... до s10.

Ответы [ 6 ]

11 голосов
/ 18 июля 2009

Вы, вероятно, хотите использовать массив. Я не знаю точно, как они работают в C # (я человек Java), но что-то вроде этого должно сделать это:

string[] s = new string[10];
for (int i; i< 10; i++)
{
    s[i] = "abc";
}

и читать http://msdn.microsoft.com/en-us/library/aa288453(VS.71).aspx

4 голосов
/ 18 июля 2009

Ваш первый пример не будет работать ни на одном языке, так как вы пытаетесь переопределить переменную "i". Это int в элементе управления цикла, но string в теле цикла.

Исходя из вашего обновленного вопроса, самое простое решение - использовать массив (в C #):

string[] s = new string[10];
for (int i; i< 10; i++)
{
    s[i] = "abc";
}
3 голосов
/ 18 июля 2009

Вы можете использовать словарь. Ключ - динамическое имя объекта Значение - объект

        Dictionary<String, Object> dictionary = new Dictionary<String, Object>();
        for (int i = 0; i <= 10; i++)
        {
            //create name
            string name = String.Format("s{0}", i);
            //check name
            if (dictionary.ContainsKey(name))
            {
                dictionary[name] = i.ToString();
            }
            else
            {
                dictionary.Add(name, i.ToString());
            }
        }
        //Simple test
        foreach (KeyValuePair<String, Object> kvp in dictionary)
        {
            Console.WriteLine(String.Format("Key: {0} - Value: {1}", kvp.Key, kvp.Value));
        }

Выход:

Key: s0 - Value: 0
Key: s1 - Value: 1
Key: s2 - Value: 2
Key: s3 - Value: 3 
Key: s4 - Value: 4
Key: s5 - Value: 5
Key: s6 - Value: 6
Key: s7 - Value: 7
Key: s8 - Value: 8
Key: s9 - Value: 9
Key: s10 - Value: 10
3 голосов
/ 18 июля 2009

Очевидно, это сильно зависит от языка. На большинстве языков это невозможно. В Javascript в браузере работает следующее:

for (var i = 0; i<10 ; i++) { window["sq"+i] = i * i; }

Теперь переменная sq3, например, установлена ​​в 9.

0 голосов
/ 18 июля 2009

Это зависит от языка.

Обычно, когда люди хотят сделать это, правильной вещью является использование структуры данных, такой как хеш-таблица / словарь / карта, в которой хранятся имена ключей и связанные значения.

0 голосов
/ 18 июля 2009

Используйте какой-нибудь eval, если он доступен на языке.

...