zoukankan      html  css  js  c++  java
  • c#编程指南(六) 类索引器(Class Indexer)

    类索引器,可以使得你使用数组一样的方式来访问类的数据。

    这种访问多见于数组,列表,词典,哈希表的快捷访问。

    实际上写法很简单,写成:public T1 this[T2 i]

    代码如下:

    using System;
     using System.Collections.Generic;
     using System.Linq;
     using System.Text;
     using System.Drawing;
    
     namespace Indexer
    {
        public class Test
        {
            private List<string> _lstTest = new List<string>();
    
            public List<string> Items 
            {
                get { return _lstTest; }
                set { _lstTest = value; }
            }
    
            public string this[int i]
            {
                get {
                    if ((i >= 0) && (i < _lstTest.Count)) return _lstTest[i];
                    else throw new IndexOutOfRangeException("the error index is " + i);
                }
    
                set {
                    if ((i >= 0) && (i < _lstTest.Count)) _lstTest[i] = value;
                    else throw new IndexOutOfRangeException("the error index is " + i);
                }
            }
    
            public string this[string s] { get { return "Test Return " + s; } }
    
    
            public string this[Color c] { get { return c.ToString(); } }
        }
    
    
        class Program
        {
            static void Main(string[] args)
            {
                Test test = new Test();
    
                test.Items.Add("test1");
                test.Items.Add("test2");
                test.Items.Add("test3");
                for (int i = 0; i < test.Items.Count; i++)
                {
                    Console.WriteLine(test[i]);
                }
    
                Console.WriteLine("----------------------------------------------------------");
                test[0] = "test4";
                for (int i = 0; i < test.Items.Count; i++)
                {
                    Console.WriteLine(test[i]);
                }
    
                Console.WriteLine("----------------------------------------------------------");
                Console.WriteLine(test["香山飘雪"]);
    
    
                Console.WriteLine("----------------------------------------------------------");
                Console.WriteLine(test[Color.BlueViolet]);
            }
        }
    }

    很简单吧,

    第一个,我定义了一个可读可写的以int为参数的索引器。

    第二个,我定义了一个可读的以string为参数的索引器。

    第三个,比较搞怪了,我定义了一个color参数的索引器。

  • 相关阅读:
    信息化基础建设 ORM 常见错误
    信息化基础建设 消息引擎
    Enterprise Library:日志的两种需求
    DDD:将概念显式化 之 验证规约
    技术人生:与其鸟宿檐下,不如击翅风雨
    DDD:传统三层架构向DDD的转换
    设计原则:意图导向编程的优点
    Entity Framework:数据库初始化的三种机制
    技术人生:使用价值观、原则和模式来理性的做设计和编程
    技术人生:人的差别在于业余时间
  • 原文地址:https://www.cnblogs.com/xbzhu/p/7381394.html
Copyright © 2011-2022 走看看