我有一个私有变量,其类型为List。我有getter和setter函数来初始化我的变量。但它不像我预期的那样有效。
api
mscorlib.dll中出现未处理的“System.StackOverflowException”类型异常
在if条件下,执行自动停止,我无法调试它。代码的错误部分是什么?谢谢。
注意:初始化该变量解决了我的问题,但我希望得到 NullPointerException 而不是 StackOverflow 。这就是我问这个问题的原因。请在投票前重新考虑。
答案 0 :(得分:4)
原因在于这一行
get { return (List<Flight>)(Session["Flight"] = flightsInCart); }
您的媒体资源名为flightsInCart
。因此,从吸气剂内部,您再次呼叫吸气剂 。在创建无限递归时,这会导致StackOverflowException
。
你的二传手也一样。
您可能想要创建一个支持字段,并使用大写字母命名该属性:
// backing field
private List<Flight> flightsInCart;
// property
private List<Flight> FlightsInCart // <- with capital (c# naming convention)
{
get { return (List<Flight>)(Session["Flight"] = flightsInCart); }
set { flightsInCart = value/*(List<Flight>)Session["Flight"]*/; }
}