`

快速了解c#中的索引器

    博客分类:
  • .NET
阅读更多
 C#中的索引器是新增加的,和属性有些不同。在c#中,属性可以是这样的:

class Person {
private string firstname;
public string FirstName
 {
get {return firstname;}

set {firstname = value;}
}

}

属性声明可以如下编码: 
Person p = new Person();
p.FirstName = "TOM";
Console.WriteLine (p.FirstName);

属性声明倒更像是域声明,只不过它还声明了两个特殊的成员,按照微软的说法就是所谓的访问函数(accessor)。当某一表达式的右边调用属性或者属性用作其他子程序(或者函数)的参数时即会调用get访问函数。反之,当表达式左边调用属性并且通过隐式传递value参数设置私有域值的情况下就会调用set访问函数。
   索引器(Indexer)是C#引入的一个新型的类成员,它使得对象可以像数组那样被方便,直观的引用。索引器非常类似于我们前面讲到的属性,但索引器可以有参数列表,且只能作用在实例对象上,而不能在类上直接作用。下面是个例子:
   

using System;


namespace IndexerExample
{

Class MyPreviousExp
{
 private string[] myCompanies = new string[10];

 //index creation
 public string this[int index]
 {
 
  get
  {
   if(index <0 or index >= 6)
    return "null"; 
   else
    return myCompanies[index];
    
  }
  set
  {
   if(!(index <0 or index >= 10))
    myCompanies[index] = value;
  }
 
 }
}
Class myMainClass
{
 public static void Main()
 {
  myPreviousExp indexerObj = new myPreviousExp();
  
  indexerObj[0] = "AMS"
  indexerObj[3] = "HCL"
  indexerObj[5] = "ACC"
  for(int i=0; i<10; i++
  {    
   
   Console.WriteLine(" My Companies{0} : {1} ",i,indexerObj[i]);
  }
   
 }
}

}
可见,我们象通过数组那样,访问到了其中的元素,而通过
myPreviousExp indexerObj = new myPreviousExp();
建立了索引器,再通过
 indexerObj[0] = "AMS"
  indexerObj[3] = "HCL"
  indexerObj[5] = "ACC"
设置值
最后输出为:

myCompanies 0 : AMS
myCompanies 1 :
myCompanies 2 :
myCompanies 3 : HCL
myCompanies 4 :
myCompanies 5 : ACC
myCompanies 6 : null
myCompanies 7 : null
myCompanies 8 : null
myCompanies 9 : null

分享到:
评论

相关推荐

    在一小时内学会 C#(txt版本)

    C# 中的结构属于轻量级快速数据类型。当需要大型数据类型时,你应该创建类。 例子: 复制内容到剪贴板 代码: struct Date { int day; int month; int year; } class Date { int day; int month; int year; ...

    c#快速入门教材及ppt课件

    本书通过一系列例程以简短...本书主要介绍了c#的编程结构,命,运算符与表达式,枚举,语句,属性,接口,函数参数,数组,索引器,装箱与拆箱,委托,继承与多态等。并配有完整的课件及练习题。快速帮助你掌握c#语言。

    《.NET实践之旅 C#篇》黄凯波著

    两个部分相互索引,相辅相成,让读者了解实际工作中可能遇到的问题和所需的知识点,也可以反过来学习这些技术在实际工作中是如何选择和应用的。 最重要的是,本书将作者工作时的心得体会穿插在章节之中。书中所有的...

    Visual C#2010 从入门到精通(Visual.C#.2010.Step.By.Step).完整去密码锁定版 I部分

    16.3 在windows应用程序中使用索引器 293 第16章快速参考 297 第17章 中断程序流程并处理事件 299 17.1 声明和使用委托 299 17.1.1 自动化工厂的例子 300 17.1.2 不使用委托来实现工厂 300 17.1.3 使用委托来...

    C#微软培训资料

    C#语言在.NET 框架中的作用及其特性 1.1 Microsoft.NET 一场新的革命 1.1.1 什么是.NET 2000 年 6 月 22 日 不论对 Microsoft 还是对整个 IT 业界都将成为值得纪念的一天 这一天 微软公司正式推出...

    c# 学 习 网 址

    描述:本站点是微软.NET技术的快速入门网站,我们不必再安装.NET Framework中的快速入门示例程序,直接在网上查看此示例即看。 名称:微软官方.NET指导站点 地址:http://www.gotdotnet.com/ 描述:上面的站点...

    asp.net知识库

    ASP.NET2.0 快速入门 ----默认中的主题外观 数据库开发 ADO.NET 通过DataTable获得表的主键 ADO.NET 2.0 操作实例 ADO.NET 2.0 大批量数据操作和多个动态的结果集 ADO.NET 2.0 异步处理 在ASP.NET中使用WINDOWS验证...

    OpenCV3编程入门(完整版).pdf+代码

    本书要求读者具有基础的C/C++知识,适合研究计算机视觉以及相关领域的在校学生和老师、初次接触OpenCV但有一定C/C++编程基础的研究人员,以及已有过OpenCV 1.0编程经验,想快速了解并上手OpenCV2、OpenCV3编程的...

    小旋风垂直搜索平台,快速拱建垂直搜索引擎

    它帮您快速搭建任何一个您期望中的垂直搜索平台,比如酷讯(kuxun.cn),比如去哪儿,比如搜职网,比如爱帮网等等。 为什么小旋风是客户端,它是基于什么平台开发的? 从程序使用的方便性及性能上考虑,我们为发挥...

    .Net Core,ASP.NET Core,C#的筛选,排序(排序)和分页库-.NET开发

    针对.Net Core,ASP.NET Core,C#的Fop过滤,排序...快速入门让我们从这里了解如何使用Fop安装Fop NuGet软件包。 PM&gt; Install-Package Fop将FopQuery添加到您的get方法[HttpGet]公共异步任务 索引([FromQuery] FopQu

    SourceCodeSourceCode.zip

    在本技巧中,您将了解通过行索引和唯一键、选择、插入、更新、删除和清除接口方法快速访问数据。提供了有关数据操作的事件。

    软件生产平台

    &lt;br&gt;3C.Net企业管理智能定制平台 是我开发了两年的一个非常优秀的定制平台 采用纯C#所写,设计采用了CS结构,运行器采用了当前市场上最流行的BS结构它能定制一个企业管理软件业务模型中的:数据字典、业务视图...

    XQuery权威指南(简码·扫描版)

     本书比较深入全面地介绍了XQuery相关知识,包括XQuery的概述和快速指南,如何使用XQuery编写简单和复杂的查询,如何对XML数据过滤、排序和分组,还讲述了FLWOR表达式、XPath及提取、组合数据的XQuery工具。...

    史上最好传智播客就业班.net培训教程60G 不下会后悔

    在ASP.Net课程的一开始,不是直接教学员怎么拖ASP.Net控件进行快速开发,而是通过ashx的模式开发原始的动态网站,让学员明白“请求—处理—响应模型”、“Http协议、Http无状态”、“c#代码渲染生成浏览器端...

Global site tag (gtag.js) - Google Analytics