C# 类扩展奇怪的索引语法。

C# 类扩展奇怪的索引语法。,c#,c#-4.0,C#,C# 4.0,我在我最喜欢的人工智能库之一(Jeff Heaton等人的Encog)中发现了以下代码 代码似乎在类上有某种扩展,我假设它允许以双精度值访问 public interface IMLDataModifiable: IMLData { /// <summary> /// Set the specified index. /// </summary> /// <param name="x">The index to access.&

我在我最喜欢的人工智能库之一(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; }
}
公共接口IMLData可修改:IMLData
{
/// 
///设置指定的索引。
/// 
///要访问的索引。
新的双精度this[int x]{get;set;}
}
有谁能告诉我这种扩展名叫什么,以便我能更详细地研究它

我需要在我自己的C++ CLI库中复制这个。对这个问题的回答将有助于我为进一步的研究提供一个良好的起点

如果我能在这方面得到任何帮助,我将不胜感激

有人能告诉我这种扩展名叫什么吗 更详细地研究它

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

例如,考虑到这个非常简单的实现,假设我们的类中有一个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; }
    }
}

将产生2。

这很可能是重复的,但我不知道描述此语法的术语,因此无法查看。谢谢@Yuval Itzhakov的回答!感谢您的明确解释。@PrimeByDesign欢迎您。
void Main()
{
    var foo = new Foo();
    Console.WriteLine(foo[1]);
}