[英]Understanding classes?
為什么此零件代碼沒有運行並顯示消息“無法通過實例引用訪問,請改為使用類型名稱來限定它”? 請給我解釋一下。
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();
}
}
}
您正在將靜態變量與實例一起使用。 只有1個靜態變量。
所以您應該像這樣靜態地使用它
Report.KwotaZ[Report.IlOperacji] = 213.3;
或將它們定義為實例變量,例如so(不帶static
關鍵字)
public double[] KwotaZ = new double[10];
public int IlOperacji = 0;
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];
}
}
問題出在“報告”類中的“靜態”關鍵字上。 “靜態”表示變量只有1個副本。 例如,即使您創建“ Report”類的5個實例,它們的“ KwotaZ”值都相同。
您可能想要刪除“ static”關鍵字。 這樣,“報表”的每個實例將具有其自己的變量版本。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.