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

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

实际上写法很简单,写成: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. Webpack的详细配置,[Webpack中各种loader的安装配置]

    在使用webpack的时候,你是不是被以下这种报错所困扰: 注意看 黄色框中标注的 You may need an appropriate loader to handle this file typ ...

  2. DP Intro - poj 1947 Rebuilding Roads

    算法: dp[i][j]表示以i为根的子树要变成有j个节点的状态需要减掉的边数. 考虑状态转移的时候不考虑i的父亲节点,就当不存在.最后统计最少减去边数的 时候+1. 考虑一个节点时,有两种选择,要么 ...

  3. 在Eclipse或工作空间中 ,复制或修改项目后,把项目部署后发现还是原来的项目名称

    1 问题引出 1 在eclipse中直接复制一个项目,修改名称之后,然后部署,部署之后的项目名称还有原来的项目名称 2 在eclipse的工作空间中直接复制一个项目,修改名字之后,发布也会出现同样的问 ...

  4. html中使用滚动条

    1. 在html页面中使用滚动条,效果如下: 代码如下: <div style="height:auto !important;max-height:200px;overflow:sc ...

  5. MySQL的模糊搜索

    1.模糊搜索 第一时间我马上想到了关键字 like 1.1.所要查询的字段中包含特定 字符,但不确定其位置,使用两个%包起来 select * from phone where provider li ...

  6. 机器学习——LightGBM

    基础概念 LigthGBM是boosting集合模型中的新进成员,它和xgboost一样是对GBDT的高效实现,很多方面会比xgboost表现的更为优秀.原理上它和GBDT及xgboot类似,都采用损 ...

  7. python: local variable 'xxx' referenced before assignment

    问题发现 xxx = 23 def PrintFileName(strFileName): if xxx == 23: print strFileName xxx = 24 PrintFileName ...

  8. [转载+原创]Emgu CV on C# (五) —— Emgu CV on 局部自适应阈值二值化

    局部自适应阈值二值化 相对全局阈值二值化,自然就有局部自适应阈值二值化,本文利用Emgu CV实现局部自适应阈值二值化算法,并通过调节block大小,实现图像的边缘检测. 一.理论概述(转载自< ...

  9. mysql 8 root密码重置

    亲测有效. https://blog.csdn.net/gupao123456/article/details/80766154

  10. 虚拟机非正常关闭,里面的服务器重启报错:Error, some other host already uses address

    解决办法: vi /etc/sysconfig/network-scripts/ifup-eth ###########注销下面的三行内容############ # if ! /sbin/arpin ...