为什么这部分代码没有运行并且显示消息“无法通过实例引用访问”并使用类型名称来限定它“?请解释一下我。
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();
}
}
}
答案 0 :(得分:5)
您在实例中使用静态变量。只有1个静态变量。
所以你应该静静地使用它
Report.KwotaZ[Report.IlOperacji] = 213.3;
或将它们定义为实例变量,如此(不含static
关键字)
public double[] KwotaZ = new double[10];
public int IlOperacji = 0;
答案 1 :(得分:2)
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];
}
}
答案 2 :(得分:1)
问题在于“报告”类中的“static”关键字。 “static”表示只有1个变量副本。例如,即使您创建了“Report”类的5个实例,它们对于“KwotaZ”也都具有相同的值。
您可能想要删除“static”关键字。这样,“报告”的每个实例都有自己的变量版本。