错误:get属性中引发了类型为'System.StackOverflowException'的异常

时间:2019-04-24 07:04:01

标签: c#

在我的模型中,我使用以下属性

 public string LastName
 {
     get => LastName;
     set
     {
         value = value.TrimAndReduce();
     }
 }

我得到这个错误

  

System.StackOverflowException:引发了“ System.StackOverflowException类型的异常”

错误来自代码的get部分

3 个答案:

答案 0 :(得分:4)

您没有用于存储该属性的实际变量的字段,并且通过访问LastName来称呼自己,因此也称为StackOverflowException。解决方案是引入一个字段并使用该属性访问它。像这样:

private string _lastName;
public string LastName
{
    get => _lastName;
    set
    {
        _lastName= value.TrimAndReduce();
    }
}

答案 1 :(得分:1)

所需的样式如下:

private string lastname;  // backing field
public string LastName
{
    get => lastName;
    set
    {
        lastname = value.TrimAndReduce();
    }
}

答案 2 :(得分:1)

设置LastName属性时,您不会调用存储实际变量,而是会调用字段_LastName并使用它们。

解决方案:

public int _LastName;
public int LastName
{
    get
    {
         get => _LastName;
    }

    set
    {
         _LastName= value.TrimAndReduce();
    }
}