美好的一天, 我无法弄清楚为什么我不能制作以下数组:
Label[] labels = new Label[25] { label1, label2, label3, label4, ... label 25 };
在这个声明的下方,我得到了工作阵列:
int[] array2 = new int[] { 1, 3, 5, 7, 9 };
VS在标签1到25上给出的错误是: 字段初始值设定项不能引用非静态方法或属性'Class.Forms1.label1'
下一个链接向我们显示intarray是正确的,但为什么我的LabelArray不正确? http://msdn.microsoft.com/en-us/library/9b9dty7d.aspx
注意:两个数组都在函数内部和外部进行测试。
答案 0 :(得分:1)
如错误所示,您不能在初始化程序中为另一个实例字段引用同一实例的其他实例字段。
你的int数组没有引用任何其他字段,它只是将编译时文字值添加为数组的值。
您只需要在类型的构造函数中创建数组,而不是作为字段初始值设定项:
public class Foo
{
private Label label1, label2;
private Label[] labels;
public Foo()
{
labels = new []{ label1, label2 };
}
}