.net集合类型的接口说明与使用

原创 2007年10月03日 11:38:00

本文介绍了.net集合类型的接口说明与使用,内容比较简单,主要是为了理清思路以及明确集合类型作为参数和返回值时的使用规范,关于集合类型的更多讨论也可以参看:认识.NET的集合

NET类库提供了丰富的集合数据类型,光System.Collections 命名空间就提供了:列表、队列、位数组、哈希表和字典等多种集合类型。以该命名空间下的集合类型来讲,大体可以分为两类:列表,与字典。前者按照顺序访问集合中的数据,后者提供了键值对的访问方式。

本文主要介绍了列表类型的接口说明和使用上的建议,不涉及.net2.0中的泛型,后者的接口层次与这儿的介绍类似。

接口定义:
IEnumerator
    object Current { get; }
    bool MoveNext();
    void Reset();

IEnumerable
    IEnumerator GetEnumerator();

ICollection : IEnumerable
    int Count { get; }
    bool IsSynchronized { get; }
    object SyncRoot { get; }
    void CopyTo(Array array, int index);
   
IList : ICollection, IEnumerable
    bool IsFixedSize { get; }
    bool IsReadOnly { get; }
    object this[int index] { get; set; }
    int Add(object value);
    void Clear();
    bool Contains(object value);
    int IndexOf(object value);
    void Insert(int index, object value);
    void Remove(object value);
    void RemoveAt(int index);

说明:
IEnumerator 提供了遍历数据的方法,在需要依次访问列表中的数据的情况下,使用该接口。
IEnumerable 为foreach操作提供支持,会返回IEnumerator接口对象。
ICollection   提供了条目数量属性,与拷贝到数组的方法,同时提供了线程同步支持。
IList          提供了添加,查找,删除,清空的操作,并支持按索引的访问方式,同时IList具有只读和固定长度属性,如果为只读或固定长度情况下执行新增,删除等操作会引起异常。
  
使用:
1 作为参数:
如果需要遍历列表,但不需要修改的情况下,优先使用ICollection,因为Collection比Enumerable, Enumerator在名称上更为贴切。同时,Collection提供了Count属性,在不需要遍历的情况下,即可获知列表的条目数量,这在进行一些逻辑判断时,更为有用。

    例如:
        bool Foo(ICollection list)
        {
            if (list == null)
                throw new ArgumentException("参数不能为空!", "list");
           
            if (list.Count == 0)
            {
                return false;
            }
           
            foreach(object item in list)
            {
                ... option
            }
            return true;
        }
   
如果需要对列表数据进行修改,查找等操作,使用IList。

2 作为返回值: 
如果希望返回一个只读的列表,使用ICollection,反之IList。

在多数情况下,返回IList,因为IList具有更宽的接口,调用者获得一个IList类型的列表后,可以更容易的把该列表再传递给需要:ICollection或IList的函数。

 

【原创】Matlab与.NET基于类型安全的接口混合编程入门

本博客所有文章分类的总目录:http://www.cnblogs.com/asxinyu/p/4288836.html       Matlab和C#混合编程文章目录 :http://www.cnb...

使用ASP.NET AJAX异步调用Web Service和页面中的类方法(7):服务器端和客户端数据类型的自动转换:泛型集合类型

====================================================== 注:本文源代码点此下载 =============================...

在.NET程序中正确使用String类型

  • 2010年03月05日 10:16
  • 44KB
  • 下载

.NET中只读集合接口的故事

.NET 4.5中添加了两个新的集合接口,IReadOnlyList和IReadOnlyDictionary。尽管这些接口表面上看起来是如此稀松平常,但是它们却暴露出关于向后兼容性、互操作性、以及协变...

.NET中IDisposable接口的基本使用

首先来看MSDN中关于这个接口的说明: [ComVisible(true)] public interface IDisposable { // Methods void Dispo...

如何使用.NET调用新浪微博接口的实例

本文详细讲下.NET调用新浪微博开放平台接口的代码示例,如果你也在搞这方面的东东,可以来看下参考哦。 1. 首先我们要获取一个App Key,在新浪微博开放平台的“我的应用”中创建一个应用,就会生成...

[c#.net]做tooltip给控件动态添加属性的做法、IExtenderProvider接口的使用

用过tooltip的人都知道,在添加一个tooltip 后,所有界面上的控件自动加上一个“在tooltip1上的tooltip”的属性,这是怎么实现的呢?这是以为tooltip继承了接口IExtend...

浅谈在ASP.NET MVC3中使用IClientValidatable接口实现客户端和服务器端同时验证

http://www.cnblogs.com/bjs007/archive/2011/01/24/1942790.html 从ASP.NET MVC2开始,MVC新增了元数据级别的验证,...

ASP.NET MVC3 中使用IValidatableObject接口实现Model数据验证

ASP.NET MVC3 中使用IValidatableObject接口实现Model数据验证 此接口弥补了MVC2中的数据验证脱离DB的不足。============================...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:.net集合类型的接口说明与使用
举报原因:
原因补充:

(最多只允许输入30个字)