• 索引器


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

    在下面的示例中,定义了一个泛型类,并为其提供了简单的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"]);
        }
    }
  • 相关阅读:
    Objective-C 数据集合
    iOS PresentViewControlle后,直接返回根视图
    NSMutableString 常用操作
    NSString 的常用操作
    iOS 获取网络状态
    C#属性封装
    C#类的一些概念
    ref和out 传递参数(C#)
    C#字符串的恒定性
    C#方法的重载和方法的可变参数
  • 原文地址:https://www.cnblogs.com/niuniu1985/p/1734257.html
Copyright © 2020-2023  润新知