c#,如何使用字符串作为字符串,但作为另一个类中对象的名称?

Moh*_*eem 2 c# string class object

已经搜索了其他问题,但没有找到如何做c#.尝试使用Map函数,但它在c#中不可用.

我想使用for循环来引用StrainsManager类中对象中的值:

public StrainsManager Ba2;
public StrainsManager Ba3;
public StrainsManager Ba4;
public StrainsManager Ba5;
public StrainsManager Ba6;
public StrainsManager Ba7;
public StrainsManager Ba8;

void Update()
{

    for (int i = 2; i < 9; i++)
    {
        string strainString = "Ba" + i;

        PlayerPrefs.SetFloat(strainString + "Cost", strainString.cost);
        PlayerPrefs.SetFloat(strainString + "IPSAdd", strainString.IPSAdd);
        PlayerPrefs.SetFloat(strainString + "Time", strainString.time);
        PlayerPrefs.SetFloat(strainString + "CostMod", strainString.costMod);
        PlayerPrefs.SetFloat(strainString + "InfectMod", strainString.infectMod);
    }

}
Run Code Online (Sandbox Code Playgroud)

如果没有for循环,我将不得不为每个对象输入5行:

    void Update()
{
    PlayerPrefs.SetFloat("Ba2Cost", Ba2.cost);
    PlayerPrefs.SetFloat("Ba2IPSAdd", Ba2.IPSAdd);
    PlayerPrefs.SetFloat("Ba2Time", Ba2.time);
    PlayerPrefs.SetFloat("Ba2CostMod", Ba2.costMod);
    PlayerPrefs.SetFloat("Ba2InfectMod", Ba2.infectMod);
}
Run Code Online (Sandbox Code Playgroud)

显然,第一个代码中的第二部分不起作用(strainString.cost),因为strainString是一个字符串而不是StrainsManager类的对象.上面的for循环是可能的还是我必须手动为这7个对象键入35行?

Bab*_*fas 5

您可以维护a Dictionary<string, StrainsManager>将键"Ba#"映射到您的StrainsManager实例.

void Update()
{
    for (int i = 2; i < 9; i++)
    {
        string strainString = "Ba" + i;

        map[strainString].Cost = strainString.cost; //follow this pattern for the other properties.
        //PlayerPrefs.SetFloat(strainString + "IPSAdd", strainString.IPSAdd);
        //PlayerPrefs.SetFloat(strainString + "Time", strainString.time);
        //PlayerPrefs.SetFloat(strainString + "CostMod", strainString.costMod);
        //PlayerPrefs.SetFloat(strainString + "InfectMod", strainString.infectMod);
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 只是问:如果strainString属于字符串类型,那么'cost'字段来自哪里? (3认同)