Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何初始化和使用数组_C#_Arrays - Fatal编程技术网

C# 如何初始化和使用数组

C# 如何初始化和使用数组,c#,arrays,C#,Arrays,我正在做一些c#作业,以下是说明: 创建一个名为FunWithArrays的新项目 添加一个名为Game的类,并确保它是公共的。游戏应该有一个 称为BingoCard的大小为5 x 5的公共二维字节数组。 BingoCard应该在游戏类的构造函数中初始化。 数据库中还应该有一个名为PlayerName的公共字符串属性 游戏课。上面提到的同一个构造函数应该收到 字符串来初始化播放器的名称 回到主方法中,创建大小的一维游戏数组 3.使用“贝丝”、“克里斯”和“唐”添加三个新游戏。将随机对象添加到主方

我正在做一些c#作业,以下是说明:

创建一个名为FunWithArrays的新项目

添加一个名为Game的类,并确保它是公共的。游戏应该有一个 称为BingoCard的大小为5 x 5的公共二维字节数组。 BingoCard应该在游戏类的构造函数中初始化。 数据库中还应该有一个名为PlayerName的公共字符串属性 游戏课。上面提到的同一个构造函数应该收到 字符串来初始化播放器的名称

回到主方法中,创建大小的一维游戏数组 3.使用“贝丝”、“克里斯”和“唐”添加三个新游戏。将随机对象添加到主方法

将游戏数组和随机对象传递给名为 “InitilizeArray。”使用foreach循环迭代游戏。 在foreachloop中,使用嵌套for循环指定随机字节 数组中25个元素中的每个元素的值。(提示:用点什么 与(byte)rand.next()类似,让随机对象返回一个byte.Make 确保随机字节范围为1到75

然后,从主方法将游戏数组传递给静态方法 然后像前面一样使用foreach和for循环 打印出每位玩家和该玩家的宾果卡。这些卡应该 在控制台中以5 x 5的表格显示

到目前为止,我还停留在第三段

在第一段中,我做了一个似乎正确的课程:

public class Game
{
    public Game() { }

    public Game (string pN)
    {
        PlayerName = pN;
        byte[,] BingoCard = new byte[5, 5];
    }

    public string PlayerName { get; set; }
}
对于第二段,在我的主要方法中:

static void Main(string[] args)
{
    const int GameSize = 3;

    Random rand = new Random();
    Game[] gameArray = new Game[GameSize];

    Game game1 = new Game("Chris");
    Game game2 = new Game("Beth");
    Game game3 = new Game("Don");

    InitializeArray(gameArray[], rand);
}
我不确定我的“创建三个新游戏”是否正确,但我认为是的

现在我在第三段中遇到了问题,我是否应该将每个新游戏(game1、game2、game3)传递给gameArray,然后使用foreach循环迭代每个游戏,例如:

foreach (var game in g)
{
    for (int row = 0; row < 5; row++)
    {
        for (int col = 0; col < 5; col++)
        {
            game[row, col] = (byte)r.Next();
        }
    }
}
foreach(g中的var游戏)
{
对于(int行=0;行<5;行++)
{
for(int col=0;col<5;col++)
{
游戏[行,列]=(字节)r.下一步();
}
}
}

我应该如何添加三个新游戏并初始化它们?

按照您的说明:

游戏应该有一个名为BingoCard的公共2维字节数组,大小为5 x 5

但是在类中,您已经在构造函数中声明了字节数组。这意味着当创建类并调用构造函数时,将创建一个字节数组。然后,在下一行中,当构造函数结束时,字节数组不再可用

您应该做的是将其创建为公共属性,就像您对
PlayerName
所做的那样:

public class Game
{
    // Public properties
    public byte[,] BingoCard = new byte[5, 5];
    public string PlayerName { get; set; }

    // Constructors
    public Game() { }

    public Game(string pN)
    {
        PlayerName = pN;            
    }
}
现在,您的程序将可以访问它


…创建一个大小为3的一维游戏数组。添加三个名为“Beth”、“Chris”和“Don”的新游戏

虽然您已经创建了3个游戏,但尚未将它们添加到阵列中。您可以使用索引执行此操作:

Game[] gameArray = new Game[GameSize];

gameArray[0] = new Game("Chris");
gameArray[1] = new Game("Beth");
gameArray[2] = new Game("Don");

现在,您可以在游戏数组中循环,并可以引用
game.BingoCard
将项目添加到每个
game
对象的多维数组中:

foreach (var game in gameArray)
{
    for (int row = 0; row < 5; row++)
    {
        for (int col = 0; col < 5; col++)
        {
            game.BingoCard[row, col] = (byte)r.Next();
        }
    }
}
foreach(游戏阵列中的var游戏)
{
对于(int行=0;行<5;行++)
{
for(int col=0;col<5;col++)
{
game.BingoCard[row,col]=(字节)r.Next();
}
}
}
但是你还有一些工作要做

确保随机字节范围为1到75


你的调试说明了什么?你上一个代码段的值是什么?我这样做正确吗?这不是一个具体的问题。你有太多的游戏。你有一个游戏数组,然后还有3个游戏有名称。数组中的那些应该是名称。我在游戏[row,col]的for循环中有一个错误,我无法用[]应用索引到一个表达式类型的游戏。所以我目前正在尝试解决这个问题。编辑问题以更好地反映问题谢谢!我最初在构造函数外部使用BingoCard,但误解了说明,认为它应该在构造函数内部创建。对于创建游戏,我理解元素现在是一个新的对象类游戏的ct?是的。这是一种较短的方式,例如:
game game1=new game(“克里斯”);gameArray[0]=game1;
,它也可以正常工作。我在游戏[row,col]方面也遇到了问题,给我一个错误,无法将索引应用于Game类型的表达式。我发现这是通过添加.BingoCard来修复的。这是正确的吗,这是因为添加.BingoCard意味着我们正在访问games BingoCard属性,从而使其有效?如果这听起来像胡言乱语,我很抱歉。YBingoCard现在是游戏的公共财产,所以你可以在游戏中添加物品。再次感谢你的帮助,我刚刚开始学习和使用数组时,正在努力理解数组。