用索引器简化的C#类型信息访问

“C#中的Indexer给人一种更’透彻’的感觉,集合类型就是集合类型,有自己专用但又最简洁的访问方式,而且同一类型可以有不同的索引访问方式。”

   --《设计模式_基于C#的工程化实现及扩展》

示例代码

用索引器简化的C#类型信息访问
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace BangWorks.PractcalPattern.Concept.Inder
{
    public class SingleColumnCollection
    {
        //实现一个字符串数组,以便用索引器访问
        string[] Names = new string[] { "BangChen", "BangJiang", "Data" };

        //实现数字索引器
        public string this[int index]
        {
            get { return Names[index]; }
        }
        //实现字符串索引器
        public string[] this[string strIndex]
        {
            get
            {
                if ((Names == null) || (Names.Length <= 0)) return null;
                return Array.FindAll<string>(Names, delegate(string cadicate)
                {return cadicate.StartsWith(strIndex);});
            }

        }
    }
}
用索引器简化的C#类型信息访问

单元测试

用索引器简化的C#类型信息访问
/// <summary>
        ///Item 的测试
        ///</summary>
        [TestMethod()]
        public void ItemTest()
        {
            SingleColumnCollection target = new SingleColumnCollection(); // TODO: 初始化为适当的值
            int index = 0; // TODO: 初始化为适当的值
            string actual;
            actual = target[index];
            Assert.AreEqual( "BangChen",actual);
        }

        /// <summary>
        ///Item 的测试
        ///</summary>
        [TestMethod()]
        public void ItemTest1()
        {
            SingleColumnCollection target = new SingleColumnCollection(); // TODO: 初始化为适当的值
            string strIndex = "Bang"; // TODO: 初始化为适当的值
            string[] actual;
            actual = target[strIndex];
            Assert.AreEqual<int>(2,actual.Length);
        }
用索引器简化的C#类型信息访问

小提示
在Vs中,输入indexer,再键入Tab键,可以利用vs自带indexer模板,创建自己的索引。


作者:kissazi2 
出处:http://www.cnblogs.com/kissazi2/ 
本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

转载:http://www.cnblogs.com/kissazi2/archive/2013/03/17/2964075.html

上一篇:WinForm多线程实现HTTP网络检测工具


下一篇:jQuery EasyUI API 中文文档 - 验证框(ValidateBox)