Nap*_*Nap 5 .net c# asp.net stack-overflow properties
当我尝试覆盖get和set函数时,我不确定导致StackOverflowException的原因.当我只使用默认的get并设置它有效.
enum MyEnumType
{
....
}
public MyEnumType data { get; set; }
Run Code Online (Sandbox Code Playgroud)
但是当我尝试添加其他数据时,它会抛出StackOverflowException
public MyEnumType data
{
get
{
return data;
}
set
{
data = value;
}
}
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?当我为asp .net用户控件属性执行此操作时,没有问题.我想知道为什么它导致正常枚举数据类型的StackOverflowException.
Rob*_*ban 28
是的,你没有支持领域...这是你应该这样做的:
private MyEnumType data;
public MyEnumType Data
{
get
{
return data;
}
set
{
data = value;
}
}
Run Code Online (Sandbox Code Playgroud)
所发生的是你指的是要返回的属性,这会导致无限循环尝试访问自己的值.因此,StackOverFlow.
在您没有在get和set方法中添加任何其他逻辑的情况下,您也可以使用自动属性.这样定义如下:
public MyEnumType Data
{
get;
set;
}
Run Code Online (Sandbox Code Playgroud)
您正在getter和setter中引用属性本身,这会导致无限递归(堆栈溢出).如果您使用了标准命名约定(数据),那将更加明显.
尝试类似的东西:
private MyEnumType _data;
public MyEnumType Data
{
get { return _data; }
set { _data = value; }
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8448 次 |
| 最近记录: |