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

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

实际上写法很简单,写成: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 >= ) && (i < _lstTest.Count)) return _lstTest[i];
else throw new IndexOutOfRangeException("the error index is " + i);
} set {
if ((i >= ) && (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 = ; i < test.Items.Count; i++)
{
Console.WriteLine(test[i]);
} Console.WriteLine("----------------------------------------------------------");
test[] = "test4";
for (int i = ; i < test.Items.Count; i++)
{
Console.WriteLine(test[i]);
} Console.WriteLine("----------------------------------------------------------");
Console.WriteLine(test["香山飘雪"]); Console.WriteLine("----------------------------------------------------------");
Console.WriteLine(test[Color.BlueViolet]);
}
}
}

很简单吧,

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

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

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

c#编程指南(六) 类索引器(Class Indexer)的更多相关文章

  1. C#类索引器的使用

    索引器提供了一种可以让类被当作数组进行访问的方式.在C#中,类索引器是通过this的属性实现的.index.ToString("D2")将index转换成一个具有两个字符宽度的字符 ...

  2. 【Unity|C#】基础篇(7)——属性(Property)/ 索引器(Indexer)

    [学习资料] <C#图解教程>(第6章):https://www.cnblogs.com/moonache/p/7687551.html 电子书下载:https://pan.baidu.c ...

  3. 雷林鹏分享:C# 索引器(Indexer)

    C# 索引器(Indexer) 索引器(Indexer) 允许一个对象可以像数组一样被索引.当您为类定义一个索引器时,该类的行为就会像一个 虚拟数组(virtual array) 一样.您可以使用数组 ...

  4. JavaScript面向对象编程指南(六) 继承

    第6章 继承 6.1 原型链 6.1.1原型链示例 原型链法:Child.prototype=new Parent(); <script> function Shape(){ this.n ...

  5. 把C#对象变成数组技术---索引器(indexer)

    public class IndexerDemo { IList list = new List(); public IndexerDemo() { list.Add("); list.Ad ...

  6. 索引器(C# 编程指南)

    原文地址:https://msdn.microsoft.com/zh-cn/library/6x16t2tx(VS.80).aspx 索引器允许类或结构的实例按照与数组相同的方式进行索引.索引器类似于 ...

  7. C#入门--索引器

    C#入门--索引器 索引器允许类或结构的实例按照与数组相同的方式进行索引.索引器类似于属性,不同之处在于它们的访问器采用参数. 索引器概述 索引器使得对象可按照与数组相似的方法进行索引. get 访问 ...

  8. set,get方法(属性,索引器)

    很多时候我们不可以把一些字段暴露出来允许别人调用和修改,为了隐藏这些字段又便于加限制的使用,在面向对象编程中一般采用写get set函数的办法,比如: //字段_age, "_"表 ...

  9. 描述一下C#中索引器的实现过程,是否只能根据数字进行索引?

    不是.可以用任意类型. 索引器是一种特殊的类成员,它能够让对象以类似数组的方式来存取,使程序看起来更为直观,更容易编写. 1.索引器的定义 C#中的类成员可以是任意类型,包括数组和集合.当一个类包含了 ...

随机推荐

  1. 实现Map按key或按value排序

    原理思路:用List实现排序,然后将List中的值遍历存入到LinkedHashMap 实现方式: //这里将map.entrySet()转换成list List<Map.Entry<St ...

  2. js中this那些事儿

    前几天写东西由于恶趣味作祟将所有的函数全部封装在json中,起初好好的,函数B也可以调用函数A的内容,不过在写一个点击事件时出现了意外, 代码如下: var $ ={ "A":fu ...

  3. sqoop导数

    #!/bin/bash source ExitCodeCheck.shopts=$@getparam(){ echo $opts|xargs -n1|cut -b 2-|awk -v arg=$1 - ...

  4. sql 获取当天开始时间 结束时间

    2010-06-21 00:00:00.000 SELECT dateadd(ms,0,DATEADD(dd, DATEDIFF(dd,0,getdate()), 0)) 2010-06-21 23: ...

  5. ubuntu中ANT的安装和配置

    一. 自动安装可以使用sudo apt-get install ant安装,但是这种装法不好.首先安装的ant不是最新的版本,其次还要装一堆其他的附带的东西.所以我才用自己手动ant安装. 二. 手动 ...

  6. 使用Chrome console提取页面数据

    使用Chrome console提取页面数据 1.需求介绍 在做课题研究的过程中,遇到这样一个问题,有一个页面中包含很多IP地址,需要把这些IP地址提取出来保存到文件中.如下图所示: 一开始的做法是一 ...

  7. SpringMVC的json交互

    一.注解说明 1.@RequestBody  作用:@RequestBody注解用于读取http请求的内容(字符串),通过springmvc提供的HttpMessageConverter接口将读到的内 ...

  8. HDU 5696 ——区间的价值——————【线段树、快排思想】

    区间的价值 Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Subm ...

  9. CentOS7部署.Net Core2.0站点(上)

    其实类似的教程网上已经有很多了,之所以要写,是应为发现在使用最新的centos7和.netcore2.1版本时还是遇到了不少坑,所以记录下,以后希望大家能少走弯路. 一.安装CentOS7 我是用虚拟 ...

  10. spring框架-----轻量级的应用开发框架

    一.bean 1.容器实例化 ApplicationContext ac=             new ClassPathXmlApplicationContext("applicati ...