C#实现Ruby的负数索引器_C#教程

C#实现Ruby的负数索引器

public class InvertibleList<T> : List<T>
  {
    public new T this[int index]
    {
      get
      {
        if (index >= 0) return base[index];
        if (Count + index < 0)
          throw new IndexOutOfRangeException();
        return this[Count + index];
      }
      set
      {
        if (index >= 0)
          base[index] = value;
        else
        {
          if (Count + index < 0)
            throw new IndexOutOfRangeException();
          this[Count + index] = value;
        }
      }
    }

  }

使用方法:

InvertibleList<string> list=new InvertibleList<string>
      {
        "1",
        "2",
        "3",
        "4",
        "5",
      };

      list[-2] = "asd";
      list.ForEach(Console.WriteLine);

代码很简单,使用也很方便,希望对大家学习C#能够有所帮助

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索c#
索引器
c站、c语言、cf、ch、c罗,以便于您获取更多的相关知识。

时间: 2024-09-13 18:59:06

C#实现Ruby的负数索引器_C#教程的相关文章

服务器端C#实现的CSS解析器_C#教程

复制代码 代码如下: using System; using System.Collections; using System.Text; using System.IO; using System.Collections.Specialized; using System.Text.RegularExpressions; using System.Diagnostics; namespace CSS { public class App { public static void Main(st

通过索引器简化C#类型信息访问

前言 作为一个有别于Java.Ruby等语言的一个特性,C#可以用索引器(Indexer)将类型本身以对象数组的形式供外部使用.下面是一个对比:(为了简化,略去了边界检查) 相关厂商内容 QClub:当SOA遭遇现实(7.26 杭州) 不难看出通过引入索引器,我们的目标类型DataAccess在涉及到根据编号检索的时候看上去更接近一个数组的样子,客户程序的开发人员不用关心具体的方法名称是GetData/GetInternalData或者是SetData/ UpdateData,仅仅把它当成一个数

C#锐利体验之第八讲 索引器与操作符重载

索引 索引器 索引器(Indexer)是C#引入的一个新型的类成员,它使得对象可以像数组那样被方便,直观的引用.索引器非常类似于我们前面讲到的属性,但索引器可以有参数列表,且只能作用在实例对象上,而不能在类上直接作用.下面是典型的索引器的设计,我们在这里忽略了具体的实现. class MyClass{    public object this [int index]    {        get        {            // 取数据        }        set  

SEOer需要了解搜索引擎的索引器

一个合格的SEOer需要对搜索引擎的结构有一定的了解,这样在进行seo时可以做到心中有数,有条不紊,而不必拘泥于固定的优化方法和技巧.而此时要分析的索引器,它是搜索引擎结构中一个比较重要部分. 索引 器第对搜索引擎是比较重要的,比如:我们熟悉的百度新闻,它是"由机器每5分钟自动选取更新",比较具有实时性,并且数据量也是相当的大.此时索引器的算法对索引器的影响就显得十分突出了.因此有人说,一个搜索引擎的有效性在很大的程度上取决于索引器的质量(精确的说应该归功于索引器的索引算法). 下面我

概述C#中的索引器

索引 C#语言一个最令人感兴趣的地方就是类的索引器(indexer).简单说来,所谓索引器就是一类特殊的属性,通过它们你就可以像引用数组一样引用自己的类.显然,这一功能在创建集合类的场合特别有用,而在其他某些情况下,比如处理大型文件或者抽象某些有限资源等,能让类具有类似数组的行为当然也是非常有用的.本文就会引领你设置类来采用索引器.但是,首先让我们概述下属性这个概念以便了解些必要的背景知识. 属性 假如你曾经用VB6编写过程序,那么你应该很熟悉属性方法才对,所谓属性方法其实就是特殊的类成员,它实

C#下的BitArray类:实现索引器和位操作

System.Collections命名空间下的BitArray相当于一个bool类型的数组bool[].MSDN用 BitArray做例子实现了一个索引器,今天研究了一下这个例子,对原来的实现做了一些改变 ,将>> 5操作变成了mod 32,敝人以为这样看起来会更直观. 代码如下: public class MyBitArray { private int[] m_Bits; private int m_Length; public MyBitArray(int length) { //Co

使用C#索引器

索引器在语法上方便您创建 客户端应用程序可将其作为数组访问的类.结构或接口.索引器经常是在主要用 于封装内部集合或数组的类型中实现的.例如,假定具有一个名为TempRecord的 类,此类表示在24小时内的10个不同时间记录的华氏度.此类包含一个表示温度 的float类型的名为"temps"的数组和表示记录温度的日期的 DateTime.通过在此类中实现一个索引器,客户端可以通过floattemp=tr[4]而 不是floattemp=tr.temps[4]语法访问TempRecord

C#——运算符重载和索引器

       一.什么是运算符?        所谓运算符重载,就是对已有的运算符重新进行定义,赋予其另一种功能,以适应不同的数据类型.自定义类的赋值运算符重载函数的作用与内置赋值运算符的作用类似,但是要要注意的是,它与拷贝构造函数与析构函数一样,要注意深拷贝浅拷贝的问题,在没有深拷贝浅拷贝的情况下,如果没有指定默认的赋值运算符重载函数,那么系统将会自动提供一个赋值运算符重载函数.        下面是个小例子: namespace 运算符重载 { class Program { static

用索引器简化的C#类型信息访问

"C#中的Indexer给人一种更'透彻'的感觉,集合类型就是集合类型,有自己专用但又最简洁的访问方式,而且同一类型可以有不同的索引访问方式."    --<设计模式_基于C#的工程化实现及扩展> 示例代码 using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace BangWorks.PractcalPattern.Concept.Inder