C # - Расширенные операторы foreach? - PullRequest
4 голосов
/ 02 января 2012

В настоящее время у меня есть:

string settings = "setting1:value1;setting2:value2";
string[] pair;
foreach(string setting in settings.Split(';'))
{
    pair = setting.Split(':');
    MessageBox.Show(pair[0] + ":" + pair[1]);
}

Я хотел бы что-то более похожее на:

string settings = "setting1:value1;setting2:value2";
foreach (string[] pair in string setting.Split(':') in settings.Split(';'))
{
    MessageBox.Show(pair[0] + ":" + pair[1]);
}

Два ключевых слова in кажутся немного нелепыми, но я бы подумал кое-чтокак это было бы возможно и очень легко, я просто не знаю, как.

Итак, возможно ли это?

Ответы [ 4 ]

8 голосов
/ 02 января 2012

Я не уверен, что это более читабельно, но вы просили об этом, и я думаю, что это выглядит круто; -)

string settings = "setting1:value1;setting2:value2";
foreach(var pair in settings.Split(';').Select(str => str.Split(':')))
{
    MessageBox.Show(pair[0] + ":" + pair[1]);
}

(я не скомпилировал его, поэтому извините, если есть синтаксические ошибки)

7 голосов
/ 02 января 2012

В качестве альтернативы другим опубликованным ответам вы также можете использовать синтаксис LINQ:

string settings = "setting1:value1;setting2:value2";
foreach(string[] pair in
    from setting in settings.Split(';')
    select setting.Split(':'))
{
    MessageBox.Show(pair[0] + ":" + pair[1]);
}
1 голос
/ 02 января 2012
foreach (string[] pair in settings.Split(';').Select(setting => setting.Split(':')))
{
   MessageBox.Show(pair[0] + ":" + pair[1]);
}
0 голосов
/ 02 января 2012
foreach (string settingstr in settings.Split(';'))
{
    string[] setval = settingstr.Split(':');
    string setting = setval[0];
    string val = setval[1];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...