在我的应用程序中,List<MyItem>只有一个getter:
public List<MyItem> myList
{
get
{
MyHost.GetItemFromID(_i1); //this may be a long operation
MyHost.GetItemFromID(_i2);
MyHost.GetItemFromID(_i3);
MyHost.GetItemFromID(_i4);
MyHost.GetItemFromID(_i5);
}
}
Run Code Online (Sandbox Code Playgroud)
此列表有时需要整体检索,有时只需要访问某些项目:即myList[3].有没有办法不建立整个列表,因为我只需要第四项?
您可以使用类包装列表,例如'myListContainer'并重载其'[]'运算符,以便您可以执行以下操作:
myListContainer[3]
Run Code Online (Sandbox Code Playgroud)
这将调用该调用
MyHost.GetItemFromID(_i3);
Run Code Online (Sandbox Code Playgroud)
并返回所需的列表项.
如果需要,我会添加一个完整的例子
编辑
public class myListContainer
{
public MyItem this[int i]
{
get
{
return MyHost.GetItemFromID(i);
}
}
}
Run Code Online (Sandbox Code Playgroud)
并添加方法来获取整个列表.