索引指示器本质就是一个含参数属性,其使用方法和数组类似。但索引指示器的参数并不只限于 int, string 也可以:

MyWeek myWeek = new MyWeek();
for (int i = 1; i <= myWeek.Length; i++)
{
    Console.WriteLine(myWeek[i]);
}

下面是一个简单的例子:

1. MyWeek 类

/// <summary>
/// 索引指示器的实质是含参属性,
///     参数并不只限于 int, string 也可以。
/// </summary>
public class MyWeek
{
    public int Length
    {
        get { return 7; }
    }

/// <summary>
    /// 使用 int 作为参数的索引指示器
    /// </summary>
    /// <param name="Index"></param>
    /// <returns></returns>
    public string this[int Index]
    {
        get
        {
            string dayName;
            switch (Index)
            {
                case 1:
                    dayName = "Monday";
                    break;
                case 2:
                    dayName = "Tuesday";
                    break;
                case 3:
                    dayName = "Wednesday";
                    break;
                case 4:
                    dayName = "Thursday";
                    break;
                case 5:
                    dayName = "Friday";
                    break;
                case 6:
                    dayName = "Saturday";
                    break;
                case 7:
                    dayName = "Sunday";
                    break;
                default:
                    dayName = "";
                    break;
            }
            return dayName;
        }
    }

/// <summary>
    /// 使用 string 作为参数的索引指示器
    /// </summary>
    /// <param name="dayName"></param>
    /// <returns></returns>
    public int this[string dayName]
    {
        get
        {
            dayName = dayName.ToLower();
            switch (dayName)
            {
                case "monday":
                    return 1;
                case "tuesday":
                    return 2;
                case "wednesday":
                    return 3;
                case "thursday":
                    return 4;
                case "friday":
                    return 5;
                case "saturday":
                    return 6;
                case "sunday":
                    return 7;
                default:
                    return -1;
            }
        }
    }
}

2. 使用方法

MyWeek myWeek = new MyWeek();
for (int i = 1; i <= myWeek.Length; i++)
{
    Console.WriteLine(myWeek[i]);
}
string dayName;
for (int i = 1; i <= myWeek.Length; i++)
{
    dayName = myWeek[i];
    Console.WriteLine(myWeek[dayName].ToString()); 
}

3. 输出结果
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
Sunday
1
2
3
4
5
6
7

相关文章:实现 foreach 功能

本文地址:http://www.cnblogs.com/anjou/archive/2007/07/06/808206.html

C# 中实现索引指示器相关推荐

  1. C#學習基礎------事件和索引指示器

    事件和索引指示器 事件為類和類的實例提供了向外界發送通知的能力,而索引指示器則可以像數組那樣對對像 進行索引訪問. 事件 形像地說,事件(event)就是類或對像用來"發出通知"的 ...

  2. android 自定义banner样式_Android中Banner的指示器自定义View

    Banner是我们经常会遇到的一个功能,有很多是需要支持滑动是有个当前的指示器界面,一般如果为了图省事的方案可以用LinearLayout然后不断的在里面添加View,把背景通过shape来设置圆形. ...

  3. 如何在 bash 中使用索引数组

    数组是一种数据结构,表示具有相同数据类型的对象集合.bash shell中支持两种类型的数组:关联数组或索引数组.在本文中,将演示如何在 bash 中使用索引数组.以下使用 shell 示例来说明索引 ...

  4. pandas使用drop函数删除dataframe中指定索引列表对应位置的数据行(drop multiple rows in dataframe with integer index)

    pandas使用drop函数删除dataframe中指定索引列表对应位置的数据行(drop multiple rows in dataframe with  integer index) 目录

  5. pandas中dataframe索引排序实战:pandas中dataframe索引降序排序、pandas中dataframe索引升序排序

    pandas中dataframe索引排序实战:pandas中dataframe索引降序排序.pandas中dataframe索引升序排序 目录

  6. 获取当前元素在兄弟元素节点中的索引

    第一种 <!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8& ...

  7. 访问“ for”循环中的索引?

    如何在如下所示的for循环中访问索引? ints = [8, 23, 45, 12, 78] for i in ints:print('item #{} = {}'.format(???, i)) 我 ...

  8. Xamarin XAML语言教程Xamarin.Forms中改变活动指示器颜色

    Xamarin XAML语言教程Xamarin.Forms中改变活动指示器颜色 在图12.10~12.12中我们会看到在各个平台下活动指示器的颜色是不一样的.Android的活动指示器默认是深粉色的: ...

  9. Oracle中加速索引创建或重建的方法

    Oracle中加速索引创建或重建的方法 View more documents from Maclean Liu

最新文章

  1. [图解]在输入框和文本框中获取和设置光标位置,以及选中文本和获取选中文本值的方法 --- 详解,兼容所有浏览器。...
  2. html5 像素人物,HTML5 Canvas 像素火焰 | 火苗
  3. boost::mpl模块实现insert相关的测试程序
  4. Java加个书名编号约束条件_java 按照题目所给变量名称、类型和方法名称进行编程 求帮助...
  5. .NET网站国际化策略
  6. 【网络流24题】No.4 魔术球问题 (二分+最小路径覆盖)
  7. SLAM++:面向对象的同时定位与建图系统(2013-CVPR)
  8. Java基础知识总结(2021版)
  9. IP地址作用与分类(A类 B类 C类 D类 E类)
  10. windows10 易升 下载失败 解决方法
  11. 访问github时出现隐私设置错误您的连接不是私密连接问题的解决方案
  12. Cat4模块SIM7600CE介绍
  13. 二进制优化(数独问题+有向图问题)
  14. Mysql中查询连续一段时间内统计数据
  15. autocomplete=“off“ 阻止chrome浏览器回填账号密码
  16. gif背景图html,CSS按钮及gif背景图片的运用
  17. 深度学习相关课程,MIT、李沐、吴恩达、
  18. 同事的评价:你的思维跳跃性太大!
  19. sqlserver数据库如何快速查看表结构sql
  20. PyQt5可视化编程-菜单和工具栏

热门文章

  1. Chrome无法打开文件的错误 [Not allowed to load local resource: file://XXXX]
  2. ECM之ucf session wait timeout【DFC_ACS_LOG_NO_NL】问题分析
  3. Teamcenter 开发中的一些问题
  4. gateway中的局部过滤器_vue 过滤器
  5. 使用计算机控制台方法,故障控制台使用方法
  6. mysql 检索操作时间段_postgresql数据库使用说明_实现时间范围查询
  7. android执行命令行取得结果,Android调用shell脚本并取得输出
  8. D. Little Artem and Dance
  9. span标签的取值与赋值
  10. Vue ---- 指令