- 浏览: 247210 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (293)
- web (1)
- [随笔分类]项目管理 (30)
- [随笔分类]WCF (14)
- 未分类 (1)
- [随笔分类]Linq (4)
- [随笔分类]C#基础 (24)
- 项目 (1)
- [网站分类]3.非技术区(技术之外的文章,但不要涉及任何政治内容) (8)
- [网站分类]1.首页原创精华.NET区(包含架构设计、设计模式)(对首页文章的要求:原创、高质量、经过认真思考并精心写作) (9)
- [随笔分类]Ubuntu (4)
- ASP.Net (1)
- [网站分类]2..NET新手区(用于发表不合适发表在首页的.NET技术文章,包括小经验、小技巧) (30)
- [随笔分类]ASP.NET MVC (20)
- [随笔分类]ASP.NET (3)
- [随笔分类]程序员厨房 (4)
- [随笔分类]英语学习 (28)
- [网站分类]4.其他技术区 (1)
- [随笔分类]Silverlight (12)
- [随笔分类]CodeSmith (8)
- [随笔分类]其他 (4)
- [随笔分类]Ruby (4)
- [发布至博客园首页] (34)
- [网站分类]其他技术区 (3)
- [随笔分类]Ruby on Rails (2)
- [网站分类].NET新手区 (33)
- [随笔分类]TDD (1)
- [随笔分类]不谈技术 (2)
- [网站分类]非技术区 (7)
最新评论
-
yicone:
You make a mistake when paste t ...
WCF步步为营(一):简单示例 -
jinweijie:
你好,这个实现不错,但是在用了scriptmanager以后就 ...
在服务器端保存ViewState
1. 概述
索引器允许类或结构的实例就像数组一样进行索引。索引器类似于属性,不同之处在于它们的访问器采用参数。索引器在语法上方便您创建客户端应用程序可将其作为数组访问的类、结构或接口。索引器经常是在主要用于封装内部集合或数组的类型中实现的。
例如,假定具有一个名为 TempRecord 的类,此类表示在 24 小时内的 10 个不同时间记录的华氏度。此类包含一个表示温度的 float 类型的名为“temps”的数组和表示记录温度的日期的 DateTime。通过在此类中实现一个索引器,客户端可以通过 float temp = tr[4] 而不是 float temp = tr.temps[4] 语法访问 TempRecord 实例中的温度。索引器表示法不仅简化了客户端应用程序的语法,还使其他开发人员能够更加直观地理解类及其用途。使用索引器可以用类似于数组的方式为对象建立索引。
get 访问器返回值。set 访问器分配值。this 关键字用于定义索引器。value 关键字用于定义由 set 索引器分配的值。
索引器不必根据整数值进行索引,由您决定如何定义特定的查找机制。索引器可被重载索引器可以有多个形参,例如当访问二维数组时。
2. 示例:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace NetTest
{
public class TestIndexClass
{
public void Test()
{
TempRecord tempRecord = new TempRecord();
// Use the indexer's set accessor
tempRecord[3] = 58.3F;
tempRecord[5] = 60.1F;
// Use the indexer's get accessor
for (int i = 0; i < 10; i++)
{
// This example validates the input on the client side. You may
// choose to validate it in the class that implements the indexer, and throw an
// exception or return an error code in the case of invalid input.
if (i < tempRecord.Length)
{
System.Console.WriteLine("Element #{0} = {1}", i, tempRecord[i]);
}
else
{
System.Console.WriteLine("Index value of {0} is out of range", i);
}
}
//Uncomment this code to see how the .NET Framework handles indexer exceptions
//try
//{
// System.Console.WriteLine("Element #{0} = {1}", tempRecord[tempRecord.Length]);
//}
//catch (System.ArgumentOutOfRangeException e)
//{
// System.Console.WriteLine(e);
//}
DayCollection week = new DayCollection();
System.Console.WriteLine(week["Fri"]);
System.Console.WriteLine(week["Made-up Day"]);
}
}
class TempRecord
{
// Array of temperature values
private float[] temps = new float[10] { 56.2F, 56.7F, 56.5F, 56.9F, 58.8F,
61.3F, 65.9F, 62.1F, 59.2F, 57.5F };
// Auto-Implemented Property
System.DateTime date { get; set; }
// To enable client code to validate input
// when accessing your indexer.
public int Length
{
get { return temps.Length; }
}
// Indexer declaration.
// Input parameter is validated by client
// code before being passed to the indexer.
public float this[int index]
{
get
{
return temps[index];
}
set
{
temps[index] = value;
}
}
}
//C# 并不将索引类型限制为整数。例如,对索引器使用字符串可能是有用的。通过搜索集合内的字符串并返回相应的值,可以实现此类索引器。
//由于访问器可被重载,字符串和整数版本可以共存。
class DayCollection
{
string[] days = { "Sun", "Mon", "Tues", "Wed", "Thurs", "Fri", "Sat" };
// This method finds the day or returns -1
private int GetDay(string testDay)
{
int i = 0;
foreach (string day in days)
{
if (day == testDay)
{
return i;
}
i++;
}
return -1;
}
// The get accessor returns an integer for a given string
public int this[string day]
{
get
{
return (GetDay(day));
}
}
}
}
发表评论
-
C#拾遗系列(1):委托
2008-06-11 14:43 558一、委托概述 委托具有以下特点: 委托类似于 ... -
C#拾遗系列(2):属性
2008-06-11 14:54 6811. 这里主要演示属性的继承和覆盖 2. 把属性理解为方法 ... -
C#拾遗系列(3):构造函数
2008-06-11 15:19 5841. 主要演示构造函数的继承 声明空 ... -
C#拾遗系列(4):索引器
2008-06-11 15:30 7341. 概述 索引器允许类或结构的实例就像数组一样进行索引。索引 ... -
C#拾遗系列(5):泛型委托
2008-06-14 17:25 564using System; using System.Col ... -
C#拾遗系列(6):迭代器
2008-06-14 23:03 4971. 示例: using System; using Sys ... -
C#拾遗系列(7):自定义属性
2008-06-18 14:52 6241 .描述 属性提供功能强大的方法以将声明信息与 C# 代码( ... -
C#拾遗系列(8):异常
2008-06-19 11:02 572using System; using System.Col ... -
C#拾遗系列(9):继承、接口、扩展方法、分部类、类操作、Ref and Out、可空类型
2008-06-19 15:07 1114本文内容: 继承 Equal示例 结构和类 ... -
MSIL(0):简介
2009-03-04 23:06 821Microsoft Intermediate Language ... -
MSIL(1): Hello World
2009-03-09 22:14 7371. 用记事本编写如下代码 .assembly HelloWo ... -
代码段:ASCII to Unicode
2009-04-17 10:44 7471: private string Co ... -
Get countries from system
2009-05-08 16:02 7621: using System; 2: usi ... -
[Tips]:Read value from Resource file in C#
2009-05-18 16:18 9951: //Namespace refer ... -
[tips]: 多线程 ManualResetEvent
2009-05-21 14:23 1309WaitHandle用于实现对共享资源的独占访问,AutoRe ... -
C#拾遗系列(1):委托
2008-06-11 14:43 628一、委托概述 委托具有以下特点: 委托 ... -
C#拾遗系列(2):属性
2008-06-11 14:54 5611. 这里主要演示属性的继承和覆盖 2. 把属性理解为方法 ... -
C#拾遗系列(3):构造函数
2008-06-11 15:19 6071. 主要演示构造函数的继承 ... -
C#拾遗系列(5):泛型委托
2008-06-14 17:25 649using System; using System.Col ... -
C#拾遗系列(6):迭代器
2008-06-14 23:03 6771. 示例: using System; using Sys ...
相关推荐
C#强化系列文章三:实验分析C#中三种计时器使用异同点.doc C#强化系列文章四:匿名方法的使用.doc C#强化系列文章五:动态代码的使用(反射和动态生成类).doc C#强化系列文章六:应用程序域(AppDomain)浅析.doc C#...
c#学习参考视频之索引器
C# 索引器 索引 数组 C# 索引器 索引 数组 C# 索引器 索引 数组 C# 索引器 索引 数组 C# 索引器 索引 数组 C# 索引器 索引 数组
C#有关索引器的例子,适合初学者的!
C#学习参考视频之索引器
C# 类索引器 没有名称 只有索引......
开发语言:C# 参考网络上流传的《勇者斗恶龙》游戏源码制作的一个射击类游戏,借用了《勇者斗恶龙》的游戏界面及部分源码。 整个游戏框架已基本完成,源码中采用了一些设计模式,有精美的游戏画面和详尽的代码注释,...
c#_索引器详解C#经典教程c#_索引器详解C#经典教程c#_索引器详解C#经典教程c#_索引器详解C#经典教程
C#基础编程中,对索引器技术的使用,基本实例,入门级知识总结
如题,C#的Demo项目:RabbitMQ封装和使用, 引用了RabbitMQ.Client 版本:3.6.9 RabbitMQ .NET客户端操作类库, 并简单展示了3种Exchange的使用
这是一个简单的,关于C#索引器的示例程序。
编程学C#(1):VS2010 C# Access数据库管理程序,1. 基于VS2010 C# 的的Access数据库管理设计; 2. 数据集的创建; 3. .NET组件,dataGridview 控件的使用; 4. 数据库的插入、删除、查询操作设计。
Modern C#系列课程(4):C# 中的类的设计
例子说明: 一个音像店,有很多CD光盘,通过索引器功能,增加,减少、查询CD光盘对象,比较形象的介绍索引器的用法。
几个有关C#索引器的例子(源代码)几个有关C#索引器的例子(源代码)几个有关C#索引器的例子(源代码)
Modern C#系列课程(4):C# 中的类的设计 (Level 200) 讲 师:俞晖 MSDN 特邀讲师 课程简介:本次课程是系列课程《现代软件开发——使用.NET与C#》的第四讲, 这次系列讲座的目的是为希望从Java, VB6和C++...
c#数组索引器集合典型程序示例,简单易学。
对于我们初学者来说,索引器理解起来
这是ACCP5.0 S2《深入.Net平台和C#编程》的一个索引器题目。 主要的知识点是: 1、在类中使用索引器检索数据 2、使用正则表达式判断是否数字。