如何通过属性通过成员列表的索引访问元素?例如:
public class foo{
private List<type> list = new List<type>;
public List{
get{/*basically, what goes here?*/}
}
}
//Much later....
foo Foo = new foo();
Console.WriteLine(Foo.List[1]);
答案 0 :(得分:1)
由于您已有一个列表,您只需在属性
中返回该列表即可public class foo{
private List<type> list = new List<type>;
public List<type> List{
get{ return list; }
}
}
答案 1 :(得分:1)
要考虑的一件事是您希望提供哪些功能更新列表。如果您只是将列表公开为get-only属性,那么没有什么可以阻止某人修改列表:
public class foo{
private List<type> list = new List<type>;
public List<type> List{
get{return list}
}
}
//Much later....
foo Foo = new foo();
Foo.List.Clear(); // perfectly legal
但是,如果您希望公开“只读”列表,则可以将列表公开为只读:
public class foo{
private List<type> list = new List<type>;
public IList<type> List{
get{return list.AsReadOnly()}
}
}
//Much later....
foo Foo = new foo();
Foo.List.Clear(); // not possible
修改强>
根据您对其他问题的评论,不清楚是否要将列表公开为属性或通过索引访问项。对于后者,您可以在类中添加索引器:
public class foo{
private List<type> list = new List<type>;
public type this[int i]{
get{return list[i]}
get{list[i] = value}
}
}
//Much later....
foo Foo = new foo();
Console.WriteLine(Foo[1]);