注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

信息 灵感 创新

I? =Information,Inspiration,Innovation

 
 
 

日志

 
 
关于我

we are 5. Mathematics, Computation, Programming, Engineering, and Making fun of life.

网易考拉推荐

数组、索引器和集合(四)  

2010-12-24 14:18:30|  分类: C# & .NET |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

一、索引器

索引器(Indexer)是C#的一种语法构造,使得程序员可以采用类似数组的方括号访问类中的集合,它类似于C++中重载索引操作符([]),但是C#中并不能重载该操作符,而是提供了索引器。它是一种比较有趣的属性,通过getset方法指定行为。

1.       索引器的申明和访问

可以采用以下方法声明索引器:

类型 this[类型 参数]{get;set;}

类型指明了索引器的返回类型,“类型 参数”则指定了可用何种参数索引包含目标对象的集合,这通常是整数,不过事实上可以是其他类型,甚至是字符串,this关键字是对索引所指对象的引用。

下面的一个例子简单演示了索引器的使用:

using System;

using System.Collections.Generic;

using System.Text;

namespace Castor

{

    class People

    {

        private string FirstName;

        private string LastName;

        private string Address;

        public People(string _firstName, string _lastName, string _address)

        {

            this.FirstName = _firstName;

            this.LastName=_lastName;

            this.Address = _address;

        }

        static void Main(string[] args)

        {

            People boy = new People("Tom", "Smith", "New York");

            for (int i = 0; i < 3; i++)

            {

                Console.WriteLine(boy[i]);

            }

            Console.Read();

        }

        string this[int index]

        {

            set

            {

                switch (index)

                {

                    case 0:

                        this.FirstName = value; break;

                    case 1:

                        this.LastName = value; break;

                    case 2:

                        this.Address = value; break;

                    default:

                        throw new ArgumentOutOfRangeException("index"); break;

                }

            }

            get

            {

                switch (index)

                {

                    case 0:

                        return this.FirstName;

                    case 1:

                        return this.LastName;

                    case 2:

                        return this.Address;

                    default:

                        throw new ArgumentOutOfRangeException("index"); break;

                }

            }

        }

    }

}

运行效果如下:

数组、索引器和集合(四) - Castor - 趁年轻,多折腾~~

 

可见访问对象中成员和数组的遍历类似,这也是我想要达到的效果。如果索引值超出了可使用的范围,将会抛出异常。

2.索引器的赋值

索引器的赋值和一般变量的赋值没有太大的不同,例如我们想修改上例中boyFirstName,可以这样:

boy[0] = "Jack";

索引器的重载

前面已经说过索引器并不要求索引值必须是整型,可以采用字符串或者其他类型作为索引器的索引值,并且索引器是可重载的。下图是一个简单的重载阐述:

数组、索引器和集合(四) - Castor - 趁年轻,多折腾~~

 

  评论这张
 
阅读(551)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2016