使用Getter Setter内部会话时的堆栈溢出异常

时间:2017-08-10 14:17:06

标签: c# asp.net asp.net-mvc

我有一个私有变量,其类型为List。我有getter和setter函数来初始化我的变量。但它不像我预期的那样有效。

CODE

api

ERROR

  

mscorlib.dll中出现未处理的“System.StackOverflowException”类型异常

在if条件下,执行自动停止,我无法调试它。代码的错误部分是什么?谢谢。

注意:初始化该变量解决了我的问题,但我希望得到 NullPointerException 而不是 StackOverflow 。这就是我问这个问题的原因。请在投票前重新考虑。

1 个答案:

答案 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"]*/; }
}