通过属性按索引访问成员

时间:2013-12-05 17:57:48

标签: c# list properties

如何通过属性通过成员列表的索引访问元素?例如:

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]);

2 个答案:

答案 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]);