C# 用于循环调用字符串转换为布尔值

C# 用于循环调用字符串转换为布尔值,c#,C#,这可能是一个非常愚蠢的问题,但我被困在这个问题上 所以我有一群叫做怪物1,怪物2 我想使用for循环来切换col.name的相应布尔值。col.name返回monster1,monster2。。。我不知道如何把这些弦变成布尔 private void OnTriggerExit2D(Collider2D col) { for (var i = 0; i < 9; i++) { if (col.name == "monster" + i) {

这可能是一个非常愚蠢的问题,但我被困在这个问题上

所以我有一群叫做怪物1,怪物2

我想使用for循环来切换col.name的相应布尔值。col.name返回monster1,monster2。。。我不知道如何把这些弦变成布尔

private void OnTriggerExit2D(Collider2D col)
{
    for (var i = 0; i < 9; i++)
    {
        if (col.name == "monster" + i)
        {
            "monster" + i = false;
        }
    }
}
私有无效OnTriggerExit2D(冲突R2D列)
{
对于(变量i=0;i<9;i++)
{
如果(列名称==“怪物”+i)
{
“怪物”+i=false;
}
}
}

为什么不使用布尔数组

private void OnTriggerExit2D(Collider2D col)
{
    for (var i = 0; i < 9; i++)
    {
        if (col.name == "monster" + i)
        {
            monster[i] = false;
        }
    }
}
私有无效OnTriggerExit2D(冲突R2D列)
{
对于(变量i=0;i<9;i++)
{
如果(列名称==“怪物”+i)
{
怪物[我]=假;
}
}
}

如果您需要根据怪物的ID引用怪物,建议使用简单的字典

另外,请记住,字典的性能可能比数组差。除非你处理的怪物超过10000个,否则这不应该是一个问题

Dictionary<string, bool> Monsters = new Dictionary<string, bool>();

private void OnTriggerExit2D(Collider2D col)
{
    for (var i = 0; i < 9; i++)
    {
        string monsterID = "monster" + i;
        Monsters[monsterID] = col.name != monsterID;
    }
}

这样设置变量是不可能的。使用布尔数组而不是单个变量。
if(Monsters["monster3"])
    // Do something...