创建一个封装List<>可通过[]操作符访问

本文关键字:可通过 访问 操作符 List 封装 一个 创建 | 更新日期: 2023-09-27 18:01:36

我有一个类,基本上是一个特定类型的封装List<>。我可以通过使用[]访问列表项,如果它是一个数组,但我不知道如何使我的新类从List<>继承这种能力。我试着搜索这个,但我很确定我不知道如何正确地表达我想做什么,发现没有什么有用的。

谢谢!

创建一个封装List<>可通过[]操作符访问

,叫做 indexer :

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

List已经有了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; }
    }
}

,叫做 indexer

索引器允许对类或结构的实例进行索引数组。索引器类似于属性,只是它们的访问器使用参数。

  • 索引器使对象能够以类似于数组的方式被索引。

  • get访问器返回一个值。set accessor赋值

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

  • value关键字用于定义由set索引器分配的值

这里是一个示例