zoukankan      html  css  js  c++  java
  • 索引器

    索引器允许类或结构的实例按照与数组相同的方式进行索引。索引器类似于属性,不同之处在于它们的访问器采用参数。

    在下面的示例中,定义了一个泛型类,并为其提供了简单的get和set访问器方法:

    class SampleCollection<T>
    {
        
    private T[] arr = new T[100];
        
    public T this[int i]
        {
            
    get
            {
                
    return arr[i];
            }
            
    set
            {
                arr[i] 
    = value;
            }
        }
    }

    // This class shows how client code uses the indexer
    class Program
    {
        
    static void Main(string[] args)
        {
            SampleCollection
    <string> stringCollection = new SampleCollection<string>();
            stringCollection[
    0= "Hello, World";
            System.Console.WriteLine(stringCollection[
    0]);
        }
    }

    索引器允许您按照处理数组的方式索引类、结构或接口。

    要声明类或结构上的索引器,请使用this关键字:

    public int this[int index]    // Indexer declaration
    {
        
    // get and set accessors
    }

     C# 并不将索引类型限制为整数。如对索引器使用字符串可能是有用的。通过搜索集合内的字符串并返回相应的值,可以实现此类的索引器。由于访问器可被重载,字符串和整数版本可以共存。

    例:声明了存储星期几的类。声明了一个get访问器,它接受字符串,并返回相应的整数

    // Using a string as an indexer value
    class DayCollection
    {
        
    string[] days = { "Sun""Mon""Tues""Wed""Thurs""Fri""Sat" };

        
    // This method finds the day or returns -1
        private int GetDay(string testDay)
        {
            
    int i = 0;
            
    foreach (string day in days)
            {
                
    if (day == testDay)
                {
                    
    return i;
                }
                i
    ++;
            }
            
    return -1;
        }

        
    // The get accessor returns an integer for a given string
        public int this[string day]
        {
            
    get
            {
                
    return (GetDay(day));
            }
        }
    }

    class Program
    {
        
    static void Main(string[] args)
        {
            DayCollection week 
    = new DayCollection();
            System.Console.WriteLine(week[
    "Fri"]);
            System.Console.WriteLine(week[
    "Made-up Day"]);
        }
    }
  • 相关阅读:
    网络运维架构
    Q in Q
    光纤/光模块的多模和单模
    Cisco VTP
    Cisco NTP配置
    惠普/aruba交换机
    【转】交换机背板带宽
    接入交换机下所有服务器不定时丢包
    windows 2012安装不了KB2919355
    Cisco交换机密码策略设置
  • 原文地址:https://www.cnblogs.com/niuniu1985/p/1734257.html
Copyright © 2011-2022 走看看