问题描述
c#接口问题ProcessisterminatedduetoStackOverflowException.求解------------------------------------------------------------------------------------namespacec1{interfaceIinterface{stringI{get;set;}}classProgram:Iinterface{publicstringI{get{return"tom";}set{I=value;}}staticvoidMain(string[]args){Programp=newProgram();p.I="2012aaa";//一写这个就会报错,请问是为什么?}}}
解决方案
本帖最后由 chen3728060 于 2014-09-11 12:13:14 编辑
解决方案二:
string_i="tom";publicstringI{get{return_i;}set{_i=value;}}
解决方案三:
死循环了,出不来
解决方案四:
引用2楼bdmh的回复:
死循环了,出不来
这个get和set不是独立执行的吗?p.I="2012aaa",这一步利用set把数据写入l里面,怎么会出现死循环?为什么得像2楼那样,外面放个_i,再放进去。我对是get和set的执行流程不是太懂,请问能具体说说死循环在哪里吗?
解决方案五:
本帖最后由 bdmh 于 2014-09-11 12:54:09 编辑
解决方案六:
引用4楼bdmh的回复:
set{I=value;}这是具体实现代码,始终访问的是属性I,这样就会始终调用set,直至死掉
哦,明白,就是写入l是调用了set,下一个set里面又是写入l,再调用下下一个set,然后下下一个set又是写入l,死了。明白,谢谢
时间: 2024-08-31 08:32:44