C# C语言中的类范围数组#

C# C语言中的类范围数组#,c#,arrays,class,C#,Arrays,Class,我试图在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 ColorsC

我试图在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 };
...

}
这样,我可以通过我创建的方法访问数组,但数组值始终为空


我能做什么?

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

您最好为您的用例使用字典,并且只从那里访问整数

在类级别上声明随机颜色:

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"];
}
Dictionary randomColor=new Dictionary();
公共游戏网页()
{
随机颜色。添加(“随机绿色”,0);
随机颜色。添加(“随机红色”,0);
//像这样改变:
随机颜色[“蓝绿色”]=5;
//访问方式如下:
int x=随机颜色[“随机绿色”];
}

每次创建一个新的
游戏页面
时,您都会用变量
RandGreen
RandRed

此时,这些变量被设置为
0
。因此,您的数组只包含
0
s。即使以后将其他值指定给
RandGreen
RandRed
。。。数组中的值不会更改

我希望这个例子能更清楚地说明:

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

编辑:


错误消息“字段初始值设定项无法引用非静态字段、方法或属性…”应该是自我解释的。您可以使颜色变量
const
正常工作。但是我想这对您来说没有任何意义。

但是数组值总是空的?你确定吗?你在哪里尝试访问它?在
DispatchTheTime
方法中?哪个数组?第二个示例是开始声明一个int数组,但没有完成它。仅供参考,在函数之外声明的变量具有类范围,这意味着它们可以在整个类中访问。如果您是指程序范围,则需要一个具有公共访问权限的静态数组。更改此行“矩形[]块={Block01、Block02、Block03、Block04、Block05、Block06、Block07、Block08、Block09、Block10、Block11、Block12};”至“矩形[]块=新矩形{Block01,Block02,Block03,Block04,Block05,Block06,Block07,Block08,Block09,Block10,Block11,Block12};”再试一次他可能意味着0(零)不是空的我想说数组本身是空的。。。抱歉,给你添了这么多麻烦,但我现在开始编程。。。在过去的两天里,我一直在与这个问题作斗争。。我的程序已经准备好了,但是我必须在我想使用的每个方法中启动数组。。。所以我想一定有办法不这样做。。