问题描述
hello community 我有一个 product class
,它有一个名为 public_price
的属性,我将 get 集中的函数应用到该属性,但在比较 {{1 }} 对象与 null 不同,为什么会发生这种情况,我该如何解决?
这是我的班级产品:
System.StackOverflowException
这是我的班级DetalleCombo:
detailcombo
这是我的班级DetalleGenerico:
public class Producto
{
[Key]
public Guid ProductoId { get; set; }
public Guid InquilinoId { get; set; }
private string Nombre { get; set; }
public virtual List<DetalleCombo> DetalleCombo { get; set; }
private decimal _PrecioPublico;
public decimal Precio_Publico
{
get
{
decimal total = 0;
if (DetalleCombo != null)
{
foreach (var item in DetalleCombo)
{
total += item.Precio * item.Cantidad;
}
return total;
}
else if (DetalleGenerico != null)
{
if (Usar_PrecioGenerico == true)
{
return _PrecioPublico;
}
else
{
foreach (var item in DetalleGenerico)
{
if (item.Es_Seleccionado == true)
{
return item.Producto.Precio_Publico;
}
}
return 0;
}
}
else
{
return _PrecioPublico;
}
}
set { _PrecioPublico = value; }
}
}
错误:
解决方法
在这段代码中:
foreach (var item in DetalleGenerico)
{
if (item.Es_Seleccionado == true)
{
return item.Producto.Precio_Publico;
}
}
return 0;
代码行
return item.Producto.Precio_Publico;
导致 Precio_Publico
属性被无休止地调用。你不断地在这个 foreach
循环中反复。
每次以这种方式调用 Precio_Publico
时,您都会向堆栈添加一个堆栈帧,直到堆栈用完空间,导致您的堆栈溢出。