zoukankan      html  css  js  c++  java
  • 用索引器简化的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模板,创建自己的索引。
  • 相关阅读:
    实验四 决策树算法及应用
    实验三 朴素贝叶斯算法及应用
    实验二 k-近邻算法及应用
    实验一 感知器及其应用
    实验三 面向对象分析与设计
    实验二 结构化分析与设计
    实验一 软件开发文档与工具的安装与使用
    ATM管理系统
    流程图与活动图的区别与联系
    四则运算2
  • 原文地址:https://www.cnblogs.com/kissazi2/p/2964075.html
Copyright © 2011-2022 走看看