什么是索引指示器


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...

面试题 相关文章推荐
SQL语言面试题
Aug 27 面试题
Ado与Ado.net的相同与不同
Dec 08 面试题
如果一个类实现了多个接口但是这些接口有相同的方法名将会怎样
Jun 16 面试题
局域网定义和特性
Jan 23 面试题
什么是静态路由,其特点是什么?什么是动态路由,其特点是什么?
Jul 26 面试题
What's the difference between Debug and Trace class? (Debug类与Trace类有什么区别)
Sep 10 面试题
进程的查看和调度分别使用什么命令
Dec 14 面试题
sort命令的作用和用法
Nov 04 面试题
Linux中如何用命令创建目录
Dec 02 面试题
在浏览器端如何得到服务器端响应的XML数据
Nov 24 面试题
为什么Runtime.exec(“ls”)没有任何输出?
Oct 03 面试题
关于Java finally的面试题
Apr 27 面试题
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 读取文件内容代码(txt,js等)
2009/12/06 PHP
PHP中对数组的一些常用的增、删、插操作函数总结
2015/11/27 PHP
php生成验证码,缩略图及水印图的类分享
2016/04/07 PHP
写了一个layout,拖动条连贯,内容区可为iframe
2007/08/19 Javascript
xheditor与validate插件冲突的解决方案
2010/04/15 Javascript
jquery延迟加载外部js实现代码
2013/01/11 Javascript
JS实现的新浪微博大厅文字内容滚动效果代码
2015/11/05 Javascript
AngularJS实现表单手动验证和表单自动验证
2015/12/09 Javascript
switch语句的妙用(必看篇)
2016/10/03 Javascript
jQuery焦点图轮播效果实现方法
2016/12/19 Javascript
基于bootstrap风格的弹框插件
2016/12/28 Javascript
Angular.js ng-file-upload结合springMVC的使用教程
2017/07/10 Javascript
vuex state及mapState的基础用法详解
2018/04/19 Javascript
JS非行间样式获取函数的实例代码
2018/06/05 Javascript
jsonp跨域获取百度联想词的方法分析
2019/05/13 Javascript
Node.js操作MongoDB数据库实例分析
2020/01/19 Javascript
vue路由传参的基本实现方式小结【三种方式】
2020/02/05 Javascript
详解react组件通讯方式(多种)
2020/05/06 Javascript
JavaScript Blob对象原理及用法详解
2020/10/14 Javascript
[04:26]DOTA2上海特锦赛小组赛第二日 TOP10精彩集锦
2016/02/27 DOTA
python计数排序和基数排序算法实例
2014/04/25 Python
Python随机生成信用卡卡号的实现方法
2015/05/14 Python
python实现图书借阅系统
2019/02/20 Python
python爬虫解决验证码的思路及示例
2019/08/01 Python
pycharm配置git(图文教程)
2019/08/16 Python
python实发邮件实例详解
2019/11/11 Python
浅谈keras.callbacks设置模型保存策略
2020/06/18 Python
PyCharm2020.1.2社区版安装,配置及使用教程详解(Windows)
2020/08/07 Python
Canvas制作旋转的太极的示例
2018/03/09 HTML / CSS
微软俄罗斯官方网站:Microsoft俄罗斯
2016/09/18 全球购物
美国温暖商店:The Warming Store
2018/12/15 全球购物
用JAVA实现一种排序,JAVA类实现序列化的方法(二种)
2014/04/23 面试题
后勤采购员岗位职责
2013/12/19 职场文书
运动会稿件100字
2014/02/21 职场文书
个人学习群众路线心得体会
2014/11/05 职场文书
我国拿下天问一号火星着陆区附近 22 个地理实体命名:平乐、西柏坡、古田、漠河等
2022/04/29 数码科技