C# 如何将从foreach获得的值(字符串)分配到不同的变量?

C# 如何将从foreach获得的值(字符串)分配到不同的变量?,c#,C#,我的目标是将从foreach循环获得的字符串存储到不同的变量中。 例如,我有字符串Apple=3;橙色=10;Mango=12,我需要将Apple,Orange和Mango存储到字符串sFruit1,sFruit2,sFruit3(这些字符串也需要根据字符串中有多少项递增,如If4,我还需要一个sFruit4变量)在执行foreach循环之后。这似乎很容易,但我无法找到正确的解决方案。这是我的密码: string sRes = "Apple=3;Orange=10;Mango=12"; stri

我的目标是将从foreach循环获得的字符串存储到不同的变量中。 例如,我有字符串
Apple=3;橙色=10;Mango=12
,我需要将
Apple
Orange
Mango
存储到字符串
sFruit1
sFruit2
sFruit3
(这些字符串也需要根据字符串中有多少项递增,如If4,我还需要一个sFruit4变量)在执行foreach循环之后。这似乎很容易,但我无法找到正确的解决方案。这是我的密码:

string sRes = "Apple=3;Orange=10;Mango=12";
string[] sSplitStrings = sRes.Split(';');

foreach (string sFruit in sSplitStrings)
{
    string sLabel = sFruit.Substring(0, sFruit.IndexOf("="));
}

在foreach循环外创建一个列表,并将一项添加到循环中的列表中

var labels = new List<string>();
foreach (string sFruit in sSplitStrings)
{
    labels.Add(sFruit.Substring(0, sFruit.IndexOf("=")));
}
var标签=新列表();
foreach(ssplitstring中的字符串sFruit)
{
labels.Add(sFruit.Substring(0,sFruit.IndexOf(“=”));
}

在foreach循环外创建一个列表,并在循环的列表中添加一项

var labels = new List<string>();
foreach (string sFruit in sSplitStrings)
{
    labels.Add(sFruit.Substring(0, sFruit.IndexOf("=")));
}
var标签=新列表();
foreach(ssplitstring中的字符串sFruit)
{
labels.Add(sFruit.Substring(0,sFruit.IndexOf(“=”));
}

最好使用字典,下面是一个示例,如果您想更改,可以使用list或任何其他类:

string sRes = "Apple=3;Orange=10;Mango=12";
string[] sSplitStrings = sRes.Split(';');
Dictionary<string,int> listsFruit = new Dictionary<string, int>();
foreach (string sFruit in sSplitStrings)
{
    string sLabel = sFruit.Substring(0, sFruit.IndexOf("="));
    string sValue = sFruit.Replace(sLabel + "=", "");
    listsFruit.Add(sLabel, int.Parse(sValue));
}
string sRes=“苹果=3;橙色=10;芒果=12”;
字符串[]sSplitStrings=sRes.Split(“;”);
Dictionary listsFruit=新字典();
foreach(ssplitstring中的字符串sFruit)
{
字符串sLabel=sFruit.Substring(0,sFruit.IndexOf(“=”);
字符串sValue=sFruit.Replace(sLabel+“=”,”);
Add(sLabel,int.Parse(sValue));
}

最好使用字典,下面是一个示例,如果您想更改,可以使用list或任何其他类:

string sRes = "Apple=3;Orange=10;Mango=12";
string[] sSplitStrings = sRes.Split(';');
Dictionary<string,int> listsFruit = new Dictionary<string, int>();
foreach (string sFruit in sSplitStrings)
{
    string sLabel = sFruit.Substring(0, sFruit.IndexOf("="));
    string sValue = sFruit.Replace(sLabel + "=", "");
    listsFruit.Add(sLabel, int.Parse(sValue));
}
string sRes=“苹果=3;橙色=10;芒果=12”;
字符串[]sSplitStrings=sRes.Split(“;”);
Dictionary listsFruit=新字典();
foreach(ssplitstring中的字符串sFruit)
{
字符串sLabel=sFruit.Substring(0,sFruit.IndexOf(“=”);
字符串sValue=sFruit.Replace(sLabel+“=”,”);
Add(sLabel,int.Parse(sValue));
}

那么你怎么知道它总是正好是三个项目呢?这听起来更像是一本
字典的工作。是的,你说得有道理,它可能只有一两个条目。所以字符串也会像sFuit1、sFuit2、sFruit3等一样递增,这取决于字符串中有多少项。。。变量,编译器需要预先知道它们是什么。如果你申报了四个,你需要五个,那就太糟糕了。这就是为什么您通常会使用集合(如
字典
,但也可以使用
列表
和数组),因为它们可以存储数量可变的项<代码>字典
可以按名称索引这些,所以,它就像一个存储任意数量变量的存储。除了使用反射,你最好的选择是创建一个字典,并将键存储为sFruit1->sFruitN,值存储为Apple=3…@VinaChan你说的是动态创建变量名吗?那么你怎么知道它总是正好有三个项目?这听起来更像是一本
字典的工作。是的,你说得有道理,它可能只有一两个条目。所以字符串也会像sFuit1、sFuit2、sFruit3等一样递增,这取决于字符串中有多少项。。。变量,编译器需要预先知道它们是什么。如果你申报了四个,你需要五个,那就太糟糕了。这就是为什么您通常会使用集合(如
字典
,但也可以使用
列表
和数组),因为它们可以存储数量可变的项
Dictionary
可以按名称对其进行索引,因此它就像一个存储任意数量变量的存储。除了使用反射,您最好的选择是创建一个字典,并将键存储为sFruit1->sFruitN,值存储为Apple=3…@VinaChan您是在谈论动态创建变量名吗?