我在我最喜欢的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库中复制它。这个问题的答案有助于为我进一步研究提供一个很好的起点。
我真的很感激我能得到的任何帮助。
答案 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。