简体   繁体   English

C# - 高级foreach语句?

[英]C# - Advanced foreach statements?

I currently have: 我目前有:

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

I would something more along the lines of: 我会更喜欢以下方面:

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

The two in keywords seem a bit ridiculous, but I would think something like this would be possible and very easy, I just don't know how. 这两个in关键字似乎有点可笑,但我认为这样的事情是可能的,很容易,我只是不知道怎么办。

So, is it possible? 那么,有可能吗?

I'm not sure this is more readable, but you asked for it and I think it looks cool ;-) 我不确定这是否更具可读性,但你要求它,我认为它看起来很酷;-)

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

(I haven't compiled it, so I'm sorry if there are syntax errors) (我没有编译它,所以如果有语法错误我很抱歉)

As an alternative to the other posted answers, you can also use the LINQ syntax: 作为其他发布的答案的替代方法,您还可以使用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]);
}
foreach (string[] pair in settings.Split(';').Select(setting => setting.Split(':')))
{
   MessageBox.Show(pair[0] + ":" + pair[1]);
}
foreach (string settingstr in settings.Split(';'))
{
    string[] setval = settingstr.Split(':');
    string setting = setval[0];
    string val = setval[1];
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM