操作符重载出现死循环
一个对象
myclass
里面一个字符数组
mylist string【】
一个读取方法
get(int i)return string【i】
一个添加方法
add(stirng s)vod stirng【i+1】=s;
一个重载
public static myclass operator +(myclass a, myclass b)
for(int i = 0; i < b.length; i++)
{
a.add(b.get(i));
}
return a;
——————————————————————————————
使用
var a = new myclass()
a。add(“a”);
////后面省略////
-----现象------
a=a+a;因为是相同对象,内部会使用一套下标;所以会一直添加下去
————我的临时解决————
public static myclass operator +(myclass a, myclass b)
var xxx = new myclass
for(int i = 0; i < a.length; i++)
xxx。add(a。get(i))
for(int i = 0; i < b.length; i++)
xxx。add(b。get(i))
return xxx;
----求救-----
上面的方法需要重复循环,可不可以不这样
我的理解好像是不行
------解决方案--------------------为什么Array不重载 + ?
为什么List<T> 不重载 +?
楼主想过没有
------解决方案--------------------主要是传入的变量是应用类型,而且指向的是同一个地址。使用克隆可以解决这个问题。
public static myclass operator +(myclass a, myclass b)
{
myclass c = (myclass)b.MemberwiseClone();
for (int i = 0; i < c.length; i++)
{
a.add(c.get(i));
}
return a;
}