类扩展奇怪的索引语法

本文关键字:索引 语法 扩展 | 更新日期: 2023-09-27 18:28:12

我在我最喜欢的一个AI库中发现了以下代码(Jeff Heaton等人的Encog)。

代码似乎对类进行了某种扩展,我认为这允许它作为双值访问。

public interface IMLDataModifiable: IMLData
{
    /// <summary>
    /// Set the specified index.
    /// </summary>
    /// <param name="x">The index to access.</param>
    new double this[int x] { get; set; }
}

有人能告诉我这种扩展叫什么吗?这样我就可以更详细地研究它了?

我需要在我自己的C++Cli库中复制它。这个问题的答案将为我的进一步研究提供一个很好的起点。

我真的很感激能在这方面得到任何帮助。

类扩展奇怪的索引语法

有人能告诉我这种分机叫什么吗?这样我就可以更详细地研究一下?

这被称为索引器。它允许您访问给定int值的指定索引处的对象,并返回double

例如,给定这个非常天真的实现,假设我们的类中有一个doubles的后备存储,并且我们想通过索引器公开Foo,我们可以这样做:

public class Foo
{
    private List<double> doubles = new List<double> { 1.0, 2.0, 3.0 };
    public double this[int x]
    {
        get { return doubles[x]; }
        set { doubles[x] = value; }
    }
}

然后使用以下索引器访问我们的Foo对象:

void Main()
{
    var foo = new Foo();
    Console.WriteLine(foo[1]);
}

将产生2。