类扩展奇怪的索引语法。

时间:2015-12-28 15:07:19

标签: c# c#-4.0

我在我最喜欢的AI库之一(Jeff Heaton等人的Encog)中找到了以下代码。

代码似乎在我假设的类上有某种扩展,允许它作为double值访问。

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库中复制它。这个问题的答案有助于为我进一步研究提供一个很好的起点。

我真的很感激我能得到的任何帮助。

1 个答案:

答案 0 :(得分:2)

  

任何人都可以告诉我这种扩展名称是什么,以便我可以   仔细研究一下?

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

例如,鉴于这个非常天真的实现,假设我们在课堂上有一个双打后备存储,我们希望通过索引器公开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。