[英]System.StackOverflowException was unhandled
請幫助,我很困惑,我不知道為什么錯誤日志System.StackOverflowException
得到處理。
我在設置LekID時一直收到錯誤消息。 我該如何解決?
這是代碼:
public Lager(long lekID, string lek, string proizvojdac, int kolicina, double cena)
{
LekID = lekID;
Lek = lek;
Proizvodjac = proizvojdac;
Kolicina = kolicina;
Cena = cena;
}
public long LekID
{
get { return LekID; }
set { LekID = value; }
}
public string Lek
{
get { return Lek; }
set { Lek = value; }
}
public string Proizvodjac
{
get { return Proizvodjac; }
set { Proizvodjac = value; }
}
public int Kolicina
{
get { return Kolicina; }
set { Kolicina = value; }
}
public double Cena
{
get { return Cena; }
set { Cena = value; }
}
您應該給私有變量和屬性賦予不同的名稱。 否則,您的媒體資源會在您訪問時自行調用。
例:
long _lekID;
public long LekID
{
get { return _lekID; }
set { _lekID = value; }
}
或者簡單地:
public long LekID { get; set; }
public long LekID
{
get { return LekID; }
set { LekID = value; }
}
這(和其他屬性)導致StackOverflowException,因為您要LekID
遍地為LekID
分配value
。
您應該在屬性中添加一個字段,並將值存儲在其中:
private long _lekID;
public long LekID
{
get { return _lekID; }
set { _lekID = value; }
}
屬性正在自稱。 嘗試像這樣更改屬性:
public string Lek
{
get;
set;
}
您正在setter和getter中遞歸調用Lek屬性
要么引入一個支持領域:
private string lek;
public string Lek
{
get { return this.lek; }
set { this.lek = value; }
}
或使用自動屬性:
public string Lek
{
get; set;
}
將此社區Wiki標記為僅是一個問題,但是如果您足夠懶惰(這通常是編程中的優點,而不是弊端),則所有這些都不會發生:
public long LekID {get;set;}
public string Lek {get;set;}
public string Proizvodjac {get;set;}
public int Kolicina {get;set;}
public double Cena {get;set;}
打字少 沒有錯誤; 並且您已正確地將API公開為屬性,以便以后可以根據需要添加驗證/副作用,並且它將與綁定API(通常不喜歡字段)一起使用。
嘗試使用prop / propfull之類的代碼段,
片段將自動創建屬性代碼
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.