一尘不染

为什么属性集会引发异常?

c#

我知道Java,通常会放入getter /
setter方法。我对使用以下代码在C#中执行此操作感兴趣,但是它引发了异常。我究竟做错了什么?

呼叫码

c.firstName = "a";

物业代码

public String firstName;
{
    get
    {
        return firstName;
    }
    set
    {
        firstName = value;
    }
}

阅读 227

收藏
2020-05-19

共1个答案

一尘不染

这是因为您要递归调用该属性-在中,set您要再次设置该属性,该属性会 无限期地 继续 下去, 直到您破坏堆栈。

您需要一个私有后备字段来保存值,例如

private string firstName;

public string FirstName
{
    get
    {
        return this.firstName;
    }
    set
    {
        this.firstName = value;
    }
}

另外,如果您使用的是C#3.0,则可以使用自动属性,该属性会为您创建一个隐藏的后备字段,例如

public string FirstName { get; set; }
2020-05-19