如何避免此代码中的堆栈溢出异常?

时间:2019-05-31 10:07:55

标签: c#

我的代码中有StackOverflowException

 public int Movie_ID
 {
     set
     {
         if (value == 0)
         {
             throw new Exception("value cannot be empty");
         }

         Movie_ID = value;
     }
     get
     {
         return Movie_ID;
     }
 }
  

引发了'System.StackOverflowException'类型的异常。“}

2 个答案:

答案 0 :(得分:6)

您的get不断递归地调用自己。您需要创建一个后备字段并返回该值,而不是再次调用该属性。例如:

private int _movieId;

public int Movie_ID
 {
     set
     {
         if (value == 0)
         {
             throw new Exception("value cannot be empty");
         }

         _movieId = value;
     }
     get
     {
         return _movieId;
     }
 }

答案 1 :(得分:0)

或者,如果您使用的是C#3.0和更高版本,则可以使用自动属性,该属性会为您创建一个隐藏的后备字段,我建议您例如。

public int Movie_ID{ get; set; }