C#中的类宽数组

本文关键字:数组 | 更新日期: 2023-09-27 18:19:55

我正试图在Windows Mobile Phone 8.1项目中用C#创建一个类范围的数组,这样当我创建一个方法时,我可以

我一开始做的是:

    public sealed partial class GamePage : Page
    {
        int Score = 0;
        int count = 0;
        private DispatcherTimer Timer;
        public ColorsClass color = new ColorsClass();
        public int RandBlue = 0;
        int RandGreen = 0;
        int RandRed = 0;
        int RandYellow = 0;
        int RandPurple = 0;
        int RandYellowGreen = 0;
        int RandOrange = 0;
        int RandGray = 0;
        bool Equal = true;
        int Fail;
        int Hit;
        int Lives = 10;
            Rectangle[] Block = { Block01, Block02, Block03, Block04, Block05, Block06, Block07, Block08, Block09, Block10, Block11, Block12 };
           int[] RandomColors = { RandBlue, RandGreen, RandRed, RandYellow, RandPurple, RandYellowGreen, RandGray };
...
}

但它给了我一个信息,"字段初始值设定项不能引用非静态字段、方法或属性…"

然后我尝试了这个选项,这是我在互联网上搜索时看到的:

    public sealed partial class GamePage : Page
    {
        int Score = 0;
        int count = 0;
        private DispatcherTimer Timer;
        public ColorsClass color = new ColorsClass();
        public int RandBlue = 0;
        int RandGreen = 0;
        int RandRed = 0;
        int RandYellow = 0;
        int RandPurple = 0;
        int RandYellowGreen = 0;
        int RandOrange = 0;
        int RandGray = 0;
        bool Equal = true;
        int Fail;
        int Hit;
        int Lives = 10;
        int [] 
        Random rand = new Random();
        public GamePage()
        {
            this.InitializeComponent();
        DispatchTheTime();
        RandomColors = new int[] { RandBlue, RandGreen, RandRed, RandYellow, RandPurple, RandYellowGreen, RandGray };
...
}

通过这种方式,我可以通过我创建的方法访问数组,但数组值始终为null。。

我能做什么?

C#中的类宽数组

每次创建新的GamePage时,都会用变量RandGreenRandRed…的内容填充数组。。。

此时,这些变量被设置为0。因此,您的数组只包含0 s。即使您稍后将其他值分配给RandGreenRandRed。。。数组中的值不会改变。

我希望这个例子能让它更清楚:

RandBlue = 0;
var RandomColors = new int[] { RandBlue, RandGreen }; 
// RandColors[0] is 0
RandBlue = 5;
// RandColors[0] is still 0

编辑:

错误消息"字段初始值设定项不能引用非静态字段、方法或属性…"应该是自我解释的。您可以使您的颜色变量const使其工作。但我想这对你来说毫无意义。

请记住,整数是值类型。如果您创建一个整数数组,就像使用RandomColors一样,您只需要在数组中放置一个值的副本。此时,RandGreen和RandomColors[1]指向不同的内存位置,其中一个的更改不会传播到另一个。您必须决定是要像实际声明的那样将值保留在许多字段中,还是要将整数保留在数组中。

您最好使用Dictionary作为用例,并且只访问其中的整数。

在班级级别声明您的RandomColors:

Dictionary<string, int> RandomColors = new Dictionary<string, int>();

public GamePage()
{
    RandomColors.Add("RandGreen", 0);
    RandomColors.Add("RandRed", 0);

    //change like this:
    RandomColors["RandGreen"] = 5;
    //access like this:
    int x = RandomColors["RandGreen"];
}