这是因为你递归地调用了属性 - 在set
你再次设置属性的情况下,这将无限期地继续,直到你打击堆栈.
您需要一个私有支持字段来保存值,例如
private string firstName; public string FirstName { get { return this.firstName; } set { this.firstName = value; } }
或者,如果您使用的是C#3.0,则可以使用自动属性,为您创建隐藏的后备字段,例如
public string FirstName { get; set; }
您在属性中设置属性名称 - 而不是字段名称.这会更好:
private string m_firstName; public String firstName; { get { return m_firstName; } set { m_firstName = value; } }