为什么这部分代码不运行并显示消息“不能用实例引用访问它,而是用类型名称限定它”?请解释一下我。
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
}
public class Report //my public class
{
public static double[] KwotaZ = new double[10];
public static double[] KwotaNa = new double[10];
public static string[] WalutaNa = new string[10];
public static string[] WalutaZ = new string[10];
public static int IlOperacji = 0;
}
private void button1_Click(object sender, EventArgs e)
{
Report raport2 = new Report(); //create new object class Report
raport2.KwotaZ[raport2.IlOperacji] = 213.3; //this wrong part code why???
Konwerter();
}
}
}发布于 2013-08-05 14:44:33
在实例中使用静态变量。只有一个静态变量。
所以你要么像这样静态地使用它
Report.KwotaZ[Report.IlOperacji] = 213.3;或者将它们定义为像这样的实例变量(没有static关键字)
public double[] KwotaZ = new double[10];
public int IlOperacji = 0;发布于 2013-08-05 14:44:48
KwotaZ和IlOperacji是static字段,因此访问它们的语法不是instance.fieldName --它是TypeName.fieldName,如
Report.KwotaZ[Report.IlOperacji] = 213.3;这将允许程序编译,但可能不是您想要的。更有可能的是,您应该将static字段设置为实例属性:
public class Report //my public class
{
// Only showing two properties here; do the rest in the same manner
public double[] KwotaZ { get; set; }
public double[] KwotaNa = { get; set; }
public Report()
{
this.KwotaZ = new double[10];
this.KwotaNa = new double[10];
}
}发布于 2013-08-05 14:45:55
问题在于"Report“类中的”静态“关键字。“静态”意味着只有一个变量的副本。例如,即使您创建了5个"Report“类实例,它们对于"KwotaZ”也都具有相同的值。
您可能想要的是删除“静态”关键字。这样,"Report“的每个实例都会有自己的变量版本。
https://stackoverflow.com/questions/18060985
复制相似问题