zoukankan      html  css  js  c++  java
  • 第十六章、使用索引器

      什么是索引器

      属性可被视为一种智能字段;类似地,索引器可被视为一种智能数组。属性封装了类中的一个值,而索引器封装了一组值。使用索引器时,语法和使用数组完全相同。

      C#提供了以下操作符来访问和操纵int中的单独的二进制位。

      1、NOT(~)操作符:这是一元操作符,执行的是按位求补操作。例如11001100应用~操作符,结果是00110011

      2、左移位(<<)操作符:这是二元操作符,执行的是左移位操作。表达式204<<2将返回48(在二进制中,204对应于11001100,所有位向左移动2个位置,结果是00110000,也就是十进制的48)。最左边的位会被丢弃,最右边则用0来补足。于此对应的是右移位操作符>>。

      3、OR(|)操作符:这是二元操作符,执行的是按位OR操作。

      4、AND(&)操作符:这是二元操作符,执行的是按位AND操作。

      5、XOR(^)操作符:这是二元操作符,执行的是按位XOR(异或)操作,只有在两个位置的值不同的前提下,返回值的对应位置才是1。

      使用索引器

      定义索引器要采用一种兼具属性和数组特征的表示法。索引器由this关键字引入,this之前指定索引器的返回值类型。this之后的方括号中,要指定作为索引器使用的值的类型。

      struct IntBits

      {

      private int bits;

      public IntBits(int initialBitValue)

      {

      bits = initialBitValue;

      }

      public bool this [int index]  //定义索引器

      {

      get

      {

      return (bit & (1 << index)) != 0;

      }

      set

      {

      if(value)

      bits |= (1 << index);

      else

      bits &= ~(1 << index);

      }

      }

      }

      注意以下几点:

      1、索引器不是方法——没有一对包含参数的圆括号,但有一对指定了索引的方括号。索引指定要访问哪一个元素。

      2、所有索引器都使用this关键字取代方法名。每个类或结构只允许定义一个索引器(虽然可以重载并有多个实现),而且总是命名为this。

      3、和属性一样,索引器也包含get和set这两个访问器。

      4、索引器声明中指定的index将用调用索引器时指定的索引值来填充。

      int adapted = 126;  //126的二进制形式是01111110

      IntBits bits = new IntBits(adapted );

      bool peek = bit[6];

      bit[0] = true;

      bit[3] = false;

      接口中的索引器

      可在接口中声明索引器。为此,需要指定get以及/或者set关键字。但是,get和set访问器的主体要替换成分号。实现该接口的任何类或结构都必须实现接口所声明的索引器的访问。例如

      interface IRawInt

      {

      bool this [int index] {get;set;} //接口中声明索引器

      }

      struct RawInt : IRawInt

      {

      ......

      public bool this [int index]

      {

      get{....}

      set{.....}

      ......

      }

      }

  • 相关阅读:
    随机数、无重复、冒泡排序
    今天是星期几
    Button
    2012/8/5为应用指定多个配置文件
    2012/8/4解决JSP显示中文乱码
    2012/8/4 struts2学习笔记
    2012/8/4Action中result的各种转发类型
    2012/8/4为Action属性注入值
    2012/8/3SVN小入门
    2012/8/3 Extjs使用TabPanel时需要注意的问题
  • 原文地址:https://www.cnblogs.com/linhuide/p/5819888.html
Copyright © 2011-2022 走看看