我正在尝试从ObservableCollection中检索特定索引位置的项目。根据{{3}},有属性Item
和Items
。
private ObservableCollection<string> _strings = new ObservableCollection<string>();
string item1;
item1 _strings.Item[0];
item1 _strings.Items[0];
当我使用Item
时,我得到:
&#39; System.Collections.ObjectModel.ObservableCollection&#39;不包含&#39;项目&#39;的定义没有扩展方法&#39;项目&#39;接受类型&#39; System.Collections.ObjectModel.ObservableCollection&#39;的第一个参数。可以找到(你错过了使用指令或程序集引用吗?)
当我使用Items
时,我得到:
无法访问受保护的成员&#39; System.Collections.ObjectModel.Collection.Items&#39;通过类型&#39; System.Collections.ObjectModel.ObservableCollection&#39 ;;的限定符;限定符必须是&#39; Model.MyStringCollection&#39; (或从中衍生出来)
我现在无法看到我在做错了什么。
答案 0 :(得分:2)
你只需称它为:
private ObservableCollection<string> _strings = new ObservableCollection<string>();
...
string item1 = _strings[0];
但你需要先添加到收藏中!
答案 1 :(得分:1)
当任何类具有索引属性时,它会被标记为Item
属性。这允许使用object[index]
语法而不是object.Item[index]
语法引用索引器属性。这是因为该属性需要一个名称,并且是一个定义为
public T this[int index]
{
get
{
//...
}
set
{
//...
}
}
编辑:有关详细信息,请参阅this article on indexer properties
答案 2 :(得分:-1)
正确的语法是:
_strings.Item(0);
不是这个
_strings.Item[0];
对Item()
或Items()
的调用实际上是一种方法调用。