什么是索引指示器


Posted in 面试题 onAugust 20, 2012
实现索引指示器(indexer)的类可以象数组那样使用其实例后的对象,但与数组不同的是索引指示器的参数类型不仅限于int
简单来说,其本质就是一个含参数属性
示例:
using System;
using System.Collections.Generic;
using System.Text;
namespace Example08
{
public class Point
{
private double x, y;
public Point(double X, double Y)
{
x = X;
y = Y;
}
//重写ToString方法方便输出
public override string ToString()
{
return String.Format(“X: {0} , Y: {1}”, x, y);
}
}
public class Points
{
Point[] points;
public Points(Point[] Points)
{
points = Points;
}
public int PointNumber
{
get
{
return points.Length;
}
}
//实现索引访问器
public Point this[int Index]
{
get
{
return points[Index];
}
}
}
//索引指示器的实质是含参属性,参数并不只限于int
class WeatherOfWeek
{
public string this[int Index]
{
get
{
//注意case段使用return直接返回所以不需要break
switch (Index)
{
case 0:
{
return “Today is cloudy!”;
}
case 5:
{
return “Today is thundershower!”;
}
default:
{
return “Today is fine!”;
}
}
}
}
public string this[string Day]
{
get
{
string TodayWeather = null;
//switch的标准写法
switch (Day)
{
case “Sunday”:
{
TodayWeather = “Today is cloudy!”;
break;
}
case “Friday”:
{
TodayWeather = “Today is thundershower!”;
break;
}
default:
{
TodayWeather = “Today is fine!”;
break;
}
}
return TodayWeather;
}
}
}
class Program
{
static void Main(string[] args)
{
Point[] tmpPoints = new Point[10];
for (int i = 0; i {
tmpPoints[i] = new Point(i, Math.Sin(i));
}
Points tmpObj = new Points(tmpPoints);
for (int i = 0; i {
Console.WriteLine(tmpObj[i]);
}
string[] Week = new string[] { “Sunday”, “Monday”, “Tuesday”, “Wednesday”, “Thursday”, “Friday”, “Staurday”};
WeatherOfWeek tmpWeatherOfWeek = new WeatherOfWeek();

for (int i = 0; i
{

Console.WriteLine(tmpWeatherOfWeek[i]);

}

foreach (string tmpDay in Week)

{

Console.WriteLine(tmpWeatherOfWeek[tmpDay]);

}

Console.ReadLine();

}

}

}

结果:
X: 0 , Y: 0
X: 1 , Y: 0.841470984807897
X: 2 , Y: 0.909297426825682
X: 3 , Y: 0.141120008059867
X: 4 , Y: -0.756802495307928
X: 5 , Y: -0.958924274663138
X: 6 , Y: -0.279415498198926
X: 7 , Y: 0.656986598718789
X: 8 , Y: 0.989358246623382
X: 9 , Y: 0.412118485241757
Today is cloudy!
Today is fine!
Today is fine!
Today is fine!
Today is fine!
Today is thundershower!
Today is cloudy!
Today is fine!
Today is fine!
Today is fine!
Today is fine!
Today is thundershower!
Today is fine!

Tags in this post...

面试题 相关文章推荐
What is the purpose of Void class? Void类的作用是什么?
Oct 31 面试题
什么是事务?为什么需要事务?
Jan 09 面试题
2019年.net常见面试问题
Feb 12 面试题
世界经理人咨询有限公司面试
Sep 23 面试题
C#里面如何判断一个Object是否是某种类型(如Boolean)?
Feb 10 面试题
C#的几个面试问题
May 22 面试题
在c#中using和new这两个关键字有什么意义
May 19 面试题
非功能性需求都包括哪些方面
Oct 29 面试题
用Python写一个for循环的例子
Jul 19 面试题
如何从一个文件档案的尾端新增记录
Dec 02 面试题
介绍一下Java中的static关键字
May 12 面试题
Jdbc数据访问技术面试题
Mar 30 面试题
new修饰符是起什么作用
Jun 28 #面试题
Can a struct inherit from another struct? (结构体能继承结构体吗)
Sep 25 #面试题
C#笔试题集合
Jun 21 #面试题
this关键字的含义
Apr 08 #面试题
Can a struct inherit from another class? (结构体能继承类吗)
Jul 22 #面试题
.net C#面试题
Aug 28 #面试题
可以使用抽象函数重写基类中的虚函数吗
Jun 02 #面试题
You might like
PHP Static延迟静态绑定用法分析
2016/03/16 PHP
ThinkPHP3.2.2实现持久登录(记住我)功能的方法
2016/05/16 PHP
php readfile()修改文件上传大小设置
2017/08/11 PHP
浅谈PHP array_search 和 in_array 函数效率问题
2019/10/15 PHP
ExtJS下 Ext.Direct加载和提交过程排错小结
2013/04/02 Javascript
js 有框架页面跳转(target)三种情况下的应用
2013/04/09 Javascript
jquery遍历数组与筛选数组的方法
2013/11/05 Javascript
利用JS判断用户是否上网(连接网络)
2013/12/23 Javascript
浅析js预加载/延迟加载
2014/09/25 Javascript
JS实现点击文字对应DIV层不停闪动效果的方法
2015/03/02 Javascript
JavaScript中exec函数用法实例分析
2015/06/08 Javascript
原生js三级联动的简单实现代码
2016/06/07 Javascript
JS实现的点击表头排序功能示例
2017/03/27 Javascript
详解angularJs指令的3种绑定策略
2017/04/13 Javascript
Vue.js常用指令的使用小结
2017/06/23 Javascript
vuejs项目打包之后的首屏加载优化及打包之后出现的问题
2018/04/01 Javascript
详解Vue微信授权登录前后端分离较为优雅的解决方案
2018/06/29 Javascript
实例讲解v-if和v-show的区别
2019/01/31 Javascript
基于vue实现图片验证码倒计时60s功能
2019/12/10 Javascript
你不知道的 TypeScript 高级类型(小结)
2020/08/28 Javascript
Vue前端判断数据对象是否为空的实例
2020/09/02 Javascript
[01:19:11]Ti4 循环赛第二日 NaVi.us vs iG
2014/07/11 DOTA
[01:05:29]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Aster BO3 第二场 1月24日
2021/03/11 DOTA
python开发的小球完全弹性碰撞游戏代码
2013/10/15 Python
使用Python的Flask框架实现视频的流媒体传输
2015/03/31 Python
python使用socket向客户端发送数据的方法
2015/04/29 Python
Python程序员面试题 你必须提前准备!
2018/01/16 Python
django filter过滤器实现显示某个类型指定字段不同值方式
2020/07/16 Python
详解Python的爬虫框架 Scrapy
2020/08/03 Python
Python二元算术运算常用方法解析
2020/09/15 Python
细说CSS3中的选择符
2008/10/17 HTML / CSS
Lacoste美国官网:经典POLO衫品牌
2016/10/12 全球购物
募捐感谢信
2015/01/22 职场文书
小班上学期个人总结
2015/02/12 职场文书
代理词怎么写
2015/05/25 职场文书
幼儿园新学期开学寄语
2015/05/27 职场文书