2013-03-05 45 views
1

请帮忙,我很困惑我不知道为什么错误日志 System.StackOverflowException未处理。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; } 
} 
+2

有几个人已经回答了你的问题,但作为一般注意请注意,你不能赶上一个堆栈溢出它发生在框架而不是你的代码中。 – 2013-03-05 10:22:33

回答

2

你在调节器和吸气

要么引进支持字段都递归调用沥属性:

private string lek; 

public string Lek 
{ 
    get { return this.lek; } 
    set { this.lek = value; } 
} 

或使用自动属性:

public string Lek 
{ 
    get; set; 
} 
3

属性正在调用自己。尝试更改您的属性,如下所示:

public string Lek 
{ 
    get; 
    set; 
} 
7

您应该为您的私有变量和属性赋予不同的名称。否则,您的财产在您访问时会自行调用。

例子:

long _lekID; 
public long LekID 
{ 
    get { return _lekID; } 
    set { _lekID = value; } 
} 

或者干脆:

public long LekID { get; set; } 
7
public long LekID 
{ 
    get { return LekID; } 
    set { LekID = value; } 
} 

这(和其他属性)导致StackOverflowException,因为你一遍又一遍分配valueLekID

你应该一个字段添加到财产和存放在那里的值:

private long _lekID; 
public long LekID 
{ 
    get { return _lekID; } 
    set { _lekID = value; } 
} 
0

标记此社区维基,因为它是唯一一个在旁边,但没有这一切都不会发生,如果你被充分懒(这通常是编程中的优点,而不是副作用):

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(通常不喜欢字段)一起使用。

0

尝试使用代码片段像道具/ propfull,

的片段将创建属性代码全自动

+0

感谢您对我的帮助 – user1798078 2013-03-05 13:54:06

相关问题