你不继承ICollection,怎么实现ICollection接口。 using System; using System.Collections; namespace ICDemo { public class MyCollection:ICollection { private string[] _list; private object _root; public MyMyCollection() { _list=new string[3]{"1","2","3"}; } public bool IsSynchronized { get { return true; } } public int Count { get { return _list.Length; } } public void CopyTO(Array array,int index) { _list.CopyTo(array,index); } public object SyncRoot { get { return _root; } } public IEnumerable GetEnumerator() { return _list.GetEnumerator() } }}
不要直接继承ICollection
如果不是,那继承CollectionBase类是实现ICollection最方便的方法
Add/Remove都在这个ArrayList进行
这样的话关于IsSynchronized和SyncRoot属性就可以直接返回ArrayList的IsSynchronized和 SyncRoot属性
using System;
using System.Collections;
namespace ICDemo
{
public class MyCollection:ICollection
{
private string[] _list;
private object _root;
public MyMyCollection()
{
_list=new string[3]{"1","2","3"};
}
public bool IsSynchronized
{
get
{
return true;
}
}
public int Count
{
get
{
return _list.Length;
}
}
public void CopyTO(Array array,int index)
{
_list.CopyTo(array,index);
}
public object SyncRoot
{
get
{
return _root;
}
}
public IEnumerable GetEnumerator()
{
return _list.GetEnumerator()
}
}}
互斥和同步是相反的.互斥是不能同时访问,不然会死锁 .
如果继承CollectionBase就具有同步操作的能力了.