按字符串名称搜索字符串列表

时间:2018-05-12 20:07:45

标签: c#

我有以下列表,我在课堂上填写:

List<string> stringCollection = new List<string>();

我在上课之前已经声明了很多静态字符串。 这些字符串是基于条件表达式的集合添加到我的列表中的,这意味着它会改变我放入列表中的字符串类型,例如:

static string DescriptionText1 = "blabla", 
              DescriptionText2 = "blabla", 
              MagnitudeText1 = "blabla",  
              MagnitudeText2 = "blabla"; 

if(number < 2)
{
    stringcollection.Add(DescriptionText1)
}
else
{
    stringcollection.Add(DescriptionText2)
}

//Magnitude

if(magnitude > 128 && number < 256)
{
    stringcollection.Add(MagnitudeText1)
}
else
{
    stringcollection.Add(MagnitudeText2)
}
... 

然后我将列表传递给我想要检索字符串的方法:

public void Collection(List<string> ts)
{
    string Description = ts.Find(DescriptionText); <--- my guess
    string Magnitude = ts.Find(MagnitudeText);
}

如何在列表中找到正确的字符串,并将其写入我方法中新声明的字符串? - 即使它们被附加,因此1,2,3 ...... 6,7

1 个答案:

答案 0 :(得分:3)

由于您始终先放入Description然后放入Magnitude,您可以这样做:

ts[0] // description
ts[1] // magnitude

或者,考虑编写一个具有两个属性的类:

// I don't know what these two things represent, please name it properly in your code!
class DescriptionMagnitude {
    public string Description { get; }
    public string Magnitude { get; }
    public DescriptionMagnitude(string description, string magnitude) {
        Description = description;
        Magnitude = magnitude;
    }
}

然后创建此类的实例并传递它。

编辑:

来自你的评论:

  

然后我可以搜索我的int变量吗?

好像你想找到与字符串相关的整数。但是,1中的DescriptionText1只是标识符的一部分。为什么不只是存储整数而不是字符串?

根据您对字符串的处理方式,枚举可能是合适的:

enum Descriptions {
    Foo = 0,
    Bar = 1
    Fizz = 2
}