“Monsters”这个名字在目前的背景下并不存在

时间:2017-04-28 22:33:34

标签: c# arrays list

我对编程很新,并遇到了一个小问题,很抱歉,如果它是一个非常简单的解决方案,但我没有得到它。所以我正在编写一个非常简单的版本,用于练习。我创建了一个方法,将所有5张卡生成一个数组,我正在尝试使用该数组来创建一个列表,作为玩家套牌。但是,在我试图在Monsters数组中执行此操作的for循环中,它表示它在当前上下文中不存在?

//Generates monsters and magic cards
public static MonsterCard[] GenerateCards()
{
    MonsterCard[] Monsters = new MonsterCard[5];

    Monsters[0].Name = "Lizard King";
    Monsters[0].Attack = 4;
    Monsters[0].Health = 3;

    Monsters[1].Name = "Piggy";
    Monsters[1].Attack = 2;
    Monsters[1].Health = 1;

    Monsters[2].Name = "Great Drake";
    Monsters[2].Attack = 7;
    Monsters[2].Health = 5;

    Monsters[3].Name = "Bear";
    Monsters[3].Attack = 5;
    Monsters[3].Health = 3;

    Monsters[4].Name = "Lion";
    Monsters[4].Attack = 6;
    Monsters[4].Health = 4;

    return Monsters;
}

main():

int main(){
    int number;
    GenerateCards();
    Random rnd = new Random();
    //Player 1 deck
    for (int i = 0; i < 10; i++)
    {
        number = rnd.Next(0, 4);
        Player1.Deck[i] = Monsters[number]; //<-- this Monsters is where the problem comes
    }

}

2 个答案:

答案 0 :(得分:1)

GenerateCard会返回Monsters,但您永远不会在main()中在本地捕获它们。

MonsterGenerateCards()的本地,并在函数执行完毕后立即死亡。

int main(){
     // ..
     MonsterCard[] Monsters = GenerateCards();
     // ..
}

上述问题将解决该问题,因为return Monsters来自GenerateCards() main(),其中包含您在 <Property Id="CPP2015REDISTX64"> <RegistrySearch Id="CPP2015RedistX64_RegKey" Type="raw" Root="HKLM" Key="SOFTWARE\Microsoft\VisualStudio\14.0\VC\VCRedist\x64" Name="Installed" Win64="yes"/> </Property> <Condition Message='[Error Message]'> CPP2015REDISTX64 </Condition> 内查找的值。

答案 1 :(得分:0)

您必须将monsters属性移动到全局上下文中。

那是因为它在另一个方法的范围中,所以它是一个局部变量,只能从这个方法访问(它只存在于这个方法中)。

一个例子:

void m1 ()
{
    int a;
    //a exists
    {
        int b;
        //a and b exist
    }
    //only a exists
}
//nothing exists

void m2 ()
{
    //still nothing exists
    int c;
    //Only c exists
}

变量仅存在于其封闭的范围中。这意味着,如果您在方法之外定义变量,则它适用于所有方法:

int a;
void m1 ()
{
    //a exists
}

void m2 ()
{
    //a still exists
}

要了解有关详情,请仔细阅读this