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


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

       --《设计模式_基于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);});
                }
    
            }
        }
    }

    单元测试

    /// <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);
            }

    小提示
    在Vs中,输入indexer,再键入Tab键,可以利用vs自带indexer模板,创建自己的索引。
  • 相关阅读:
    一天一道算法题---6.8--数学题
    TOJ----1037---最大独立集
    一天一道算法题---6.6---排列递推(我不会)
    一天一道算法题---6.4--中途相遇法
    一天一道算法题--6.5--数学题
    夜太美---酒不醉--人自醉
    SSH组合之Spring3整合Hibernate4(一)
    Hibernater入门
    Java微信公众平台进入开发模式
    新浪sae平台进行数据库的连接
  • 原文地址:https://www.cnblogs.com/kissazi2/p/2964075.html
Copyright © 2020-2023  润新知