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。。
我能做什么?
每次创建新的GamePage
时,都会用变量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
使其工作。但我想这对你来说毫无意义。
请记住,整数是值类型。如果您创建一个整数数组,就像使用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"];
}