一个关于类初始化的问题

wanghao2979 2009-12-26 07:52:29
接口类 public interface IMainMachine
定义了 BaseUser m_user { get; set; } (BaseUser 是个实体类 )

抽象类 public abstract class BaseMachine:IMainMachine 中

public BaseMachine()
{
m_user = new BaseUser();
m_user.Name = ConfigUtil.GetTypeValue("UserName");
m_user.PassWord = ConfigUtil.GetTypeValue("PassWord"); }

public BaseUser m_user
{
get
{
return m_user;
}
set
{
m_user = value;
}
}

现在问题是在set上报错:未处理的“System.StackOverflowException”类型的异常出现


如果将 BaseMachine中的内容注释掉就不会报错
大家帮帮看看这是什么问题
我只是想在抽象类中初始化一些数据
...全文
126 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
gqqnb 2009-12-26
  • 打赏
  • 举报
回复
很明显,你没有为m_user属性创建相应的字段。m_user = value; 这个赋值句相当于外部调用m_user的set段,所以一直在重复调用,造成堆溢出。

解决方法是BaseMachine类里加一个字段——你应该在接口里写BaseUser User { get; set; },BaseMachine里写BaseUser user(或你喜欢m_user);然后
public BaseUser User
{
get
{
return user;
}
set
{
user = value;
}
}
wanghao2979 2009-12-26
  • 打赏
  • 举报
回复
谢谢
threenewbee 2009-12-26
  • 打赏
  • 举报
回复
你的代码循环递归了。

set m_user 调用了 set m_user,set m_user 又调用了 set m_user。。。
最后堆栈溢出了。。。
threenewbee 2009-12-26
  • 打赏
  • 举报
回复
private BaseUser m_user;
public BaseUser user
{
get
{
return m_user;
}
set
{
m_user = value;
}
}

110,546

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧