创建封装List<>的对象通过[]运算符访问?

时间:2013-02-27 15:04:25

标签: c# list encapsulation

我创建了一个类,它基本上是某种类型的封装List<>。我可以使用[]来访问列表项,如果它是一个数组,但我不知道如何让我的新类从List<>继承该功能。我试着寻找这个,但我很确定我不知道如何正确地说出我想要做的事情,并没有发现任何有用的东西。

谢谢!

3 个答案:

答案 0 :(得分:9)

这称为indexer

public SomeType this[int index] {
    get { }
    set { }
}

答案 1 :(得分:1)

这称为 indexer

  

索引器允许对类或结构的实例进行索引   阵列。索引器类似于属性,除了它们的访问器   参数。

  • 索引器使对象能够以与数组类似的方式编制索引。

  • get访问者返回一个值。 set访问者分配值。

  • this关键字用于定义索引器。

  • value关键字用于定义设置索引器分配的值。

这是 EXAMPLE

答案 2 :(得分:1)

列表已经有了Indexer的定义,因此无需更改该代码。它将默认工作。

   public class MyClass : List<int>
   {

   }

我们可以在这里访问索引器。即使我们没有实施任何东西

MyClass myclass = new MyClass();
myclass.Add(1);
int i = myclass[0]; //Fetching the first value in our list ( 1 ) 

请注意,List类不是为继承而设计的。你应该封装它,而不是扩展它。 - Servy

这看起来像

public class MyClass 
{
    private List<int> _InternalList = new List<int>();

    public int this[int i]
    {
        get { return _InternalList[i]; }
        set { _InternalList[i] = value; }
    }
}