本文介绍了StackoverFlowException在C#的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我写一个代码,在C#中设置属性,并得到一个例外。
公共类人
{
公共字符串名称
{
组
{
的name = value;
}
得到
{
返回名称;
}
}
公共静态无效的主要()
{
人P =新的人();
p.name =比拉尔;
Console.WriteLine(p.name);
}
}
解决方案
您有无穷的递归你的财产 - 你的setter方法调用自身,直到你得到一个堆栈溢出:
设置
{
产品名称=值;
}
相反,无论使用的(建议,如果你不需要支持字段的直接访问,并没有做你的getter任何其他操作/ setter方法):
公共字符串名称{;设置;}
或者使用支持字段:
私人字符串_name;
公共字符串名称
{
组
{
_name =价值;
}
得到
{
返回_name;
}
}
I am writing a code for setting the property in C# and getting an exception.
public class person
{
public string name
{
set
{
name = value;
}
get
{
return name;
}
}
public static void Main()
{
person p = new person();
p.name = "Bilal";
Console.WriteLine(p.name);
}
}
解决方案
You have infinite recursion in your property - your setter will call itself until you get a stack overflow:
set
{
name = value;
}
Instead either use an auto-property (recommended if you don't need direct access to the backing field and are not doing any other operation in your getter/setters):
public string name {get;set;}
Or use a backing field:
private string _name;
public string name
{
set
{
_name = value;
}
get
{
return _name;
}
}
这篇关于StackoverFlowException在C#的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!