社区
C#
帖子详情
自己实现的集合类,如何防止 foreach中途退出后 当前的location位置不对?
progame
2003-04-25 02:55:56
因为线程被终止,所以foreach并未执行完
结果下次执行前我只能使用CMyClass.Reset()复位才行
有别的方法么?
...全文
46
5
打赏
收藏
自己实现的集合类,如何防止 foreach中途退出后 当前的location位置不对?
因为线程被终止,所以foreach并未执行完 结果下次执行前我只能使用CMyClass.Reset()复位才行 有别的方法么?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
progame
2003-04-25
打赏
举报
回复
o
timmy3310
2003-04-25
打赏
举报
回复
比如:
internal class SomeEnumerator
{
private YourClass _data;
public SomeEunmerator( YourClass obj )
{
_data = obj;
}
public object Current
{
// 得到集合当前的元素
get
{
CFileItem item = (CFileItem)_data.m_Files[this.m_Location - 1];
return (object)item;
}
}
public void Reset()
{
_data.m_Location = 0;
}
public bool MoveNext()
{
_data.m_Location++;
if (_data.m_Location > _data.m_Files.Count)
{
_data.m_Location = 0;
return false;
}
else
return true;
}
}
timmy3310
2003-04-25
打赏
举报
回复
你可以写一个内部类来帮你实现IEnumerator,而在:
public IEnumerator GetEnumerator()
{
return new SomeEnumerator(this); //每次foreach都返回一个新实例
}
然后在SomeEnumerator实现IEnumerator的方法,也就是MoveNext、Reset等,在GetEnumerator里面每次都返回一个实例的话,就不会受到一个foreach没有正常执行完,内部的Localtion会影响下一次了
progame
2003-04-25
打赏
举报
回复
#region 集合实现
public IEnumerator GetEnumerator()
{
return (IEnumerator)this;
}
public object Current
{
// 得到集合当前的元素
get
{
CFileItem item = (CFileItem)this.m_Files[this.m_Location - 1];
return (object)item;
}
}
public void Reset()
{
this.m_Location = 0;
}
public bool MoveNext()
{
this.m_Location++;
if (this.m_Location > this.m_Files.Count)
{
this.m_Location = 0;
return false;
}
else
return true;
}
#endregion
timmy3310
2003-04-25
打赏
举报
回复
把你的类代码贴出来
Java 面试总结
java中的
集合类
有哪些? hashmap和hashtable的区别? list有哪些常用类? ArrayList和LinkedList的区别? 有哪些
实现
多线程的方式? 怎么保证线程的安全性? volatile关键的作用? volatile是怎么保证可见性的? ...
codeproject资源集合贴
Applications Crafting a C# forms Editor From scratch ... 建立一个类似C#的环境,
实现
控件拖拉,属性 Packet Capture and Analayzer 网络封包截获 http://www.codep
一份简单的前端开发指南
接着深入CSS,讲述样式的应用、布局设计和视觉效果的
实现
。JavaScript部分探讨了编程语言的基础,包括变量声明、数据类型、函数使用等核心概念。ES6章节引入了新的语法特性和编程模式,为代码提供了更高效、简洁的...
[转]信息安全相关理论题(二)
27、在工程实施之前,验收方可以不给施工方弱电布线图纸,但施工结束后必须有图纸 A、 对 B、 错 您的答案: 标准答案: B 28、在OSI七层协议中,提供一种建立连接并有序传输数据的方法的层是 A、 传输层 B、 表示层...
编程资料 -C# 多线程
- 多线程C#多线程编程实例实战作者: 刘弹 www.ASPCool.com 时间:2003-5-17 上午 10:24:05 阅读次数:10996单个写入程序/多个阅读程序在.Net 类库中其实已经提供了
实现
,即System.Threading.ReaderWriterLock 类。...
C#
111,093
社区成员
642,554
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章