第三部分 类型设计2------《Microsoft.NET框架程序设计》

本文介绍C#中如何使用索引器实现类似数组的访问方式,并通过BitArray类的具体实现进行详细说明。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  在C#中,含参属性(索引器)可以类似数组的语法来访问.换句话说,我们可以将索引器看作是重载[]操作符的一种方式.下面演示的是一个BitArray类型的例子,它允许我们用类似数组的语法来访问该类型实例中保存的一组位.

  public class BitArray  {

                        //一个用于保存位的私有字节数组

      private Byte[] byteArray;

                        private Int32 numBits;

                       //下面的构造器用于分配字节数组,并将所有的位设为0

                       public BitArray(Int32 numBits)  {

                        //首先检验参数的有效性

                        if(numBits<=0)

                            throw new ArgumentOutOfRangeException("numBits","numBits must be>0");

                         //保存位的个数

                        this.numBits=numBits;

                         //为位数组分配字节

                          byteArray=new Byte[(numBits+7)/8];

                           }

                        //下面是一个索引器

                      public Boolean this[Int32 bitPos] {

                      //下面是索引器的get访问器方法

                              get {

                                        //首先检验参数的有效性

                                          if((bitPos<0)||(bitPos>=numBits))

                                                   throw new IndexOutOfRangeException();

                                        //返回指定索引上的位的状态

                                                   return (byteArray[bitPos/8)&(1<<(bitPos%8))!=0;

                                 }

             

                          get{

                               //首先检验参数的有效性

                                if((bitPos<0)||(bitPos>=numButs))

                                               throw new IndexoutofRangeException();

                               //返回指定索引的位的状态

                                         return (byteArray[bitPos/8]&(1<<(bitPos %8]))!=0;

                                   }

                              //下面是索引器的set访问器方法

                             set{

                                   if((bitPos<0)||(bitPos>=numBits))

                                                throw new IndexOutRangeException();

 

                              

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值