我知道java并且通常会放入getter/setter方法.我有兴趣使用以下代码在C#中执行此操作,但它会引发StackOverflow异常.我究竟做错了什么?
致电代码
c.firstName = "a";
Run Code Online (Sandbox Code Playgroud)
物业代码
public String firstName;
{
get
{
return firstName;
}
set
{
firstName = value;
}
}
Run Code Online (Sandbox Code Playgroud)
Gre*_*ech 104
这是因为你递归地调用了属性 - 在set你再次设置属性的情况下,这将无限期地继续,直到你打击堆栈.
您需要一个私有支持字段来保存值,例如
private string firstName;
public string FirstName
{
get
{
return this.firstName;
}
set
{
this.firstName = value;
}
}
Run Code Online (Sandbox Code Playgroud)
或者,如果您使用的是C#3.0,则可以使用自动属性,为您创建隐藏的后备字段,例如
public string FirstName { get; set; }
Run Code Online (Sandbox Code Playgroud)
Mic*_*ren 14
您在属性中设置属性名称 - 而不是字段名称.这会更好:
private string m_firstName;
public String firstName;
{
get
{
return m_firstName;
}
set
{
m_firstName = value;
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
36187 次 |
| 最近记录: |