ASP.Net 2.0 中的List<T>的问题。

zahuifan 2006-08-23 11:43:40
以前,我用VS2003的时候,可以使用ArrayList.ReadOnly()函数:
public class A {
private ArrayList _students = new ArrayList();

pubic ArrayList students {
get { return ArrayList.ReadOnly(_students);
}
}

使用ArrayList.ReadOnly()函数可以防止Client是使用 new A().students.Add()方法.

现在我使用VS2005的List<T>:
public class A {
private IList<Student> _students = new List<Students>();

public IList<Student> students {
get { return ? }
}
}

发现List<T>并没有ReadOnly()函数.那么我怎么才能返回一个不允许添加项目的List<T>呢?

ps: 后来发现System.Collections.ObjectModel命名空间有一个ReadOnlyCollection<T>类, 可以
return new System.Collections.ObjectModel.ReadOnlyCollection<string>(_students);

不知道还有没有更好的方法?

还有我是应该写成:
public ICollection<Student> students {
get { return new System.Collections.ObjectModel.ReadOnlyCollection<string>(_students); }
}

还是

public IList<Student> students {
get { return new System.Collections.ObjectModel.ReadOnlyCollection<string>(_students); }
}
呢?
...全文
251 点赞 收藏 1
写回复
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
Eddie005 2006-08-23
public ICollection<Student> students
回复
发动态
发帖子
C#
创建于2007-09-28

10.4w+

社区成员

.NET技术 C#
申请成为版主
社区公告

全世界最好的语言,没有之一.