C# C语言中的类范围数组#
我试图在Windows Mobile Phone 8.1项目中的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
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(零)不是空的我想说数组本身是空的。。。抱歉,给你添了这么多麻烦,但我现在开始编程。。。在过去的两天里,我一直在与这个问题作斗争。。我的程序已经准备好了,但是我必须在我想使用的每个方法中启动数组。。。所以我想一定有办法不这样做。。