Скажем, у нас есть общий класс с личным списком. Мы можем заставить его возвращать обертку только для чтения этого списка, по крайней мере, двумя способами:
public class Test<T>
{
public List<T> list = new List<T>();
public IEnumerable<T> Values1
{
get
{
foreach (T i in list)
yield return i;
}
}
public IEnumerable<T> Values2
{
get
{
return list.AsReadOnly();
}
}
}
Оба Values1
и Values2
отражают любые фрагменты в базовой коллекции и не позволяют им изменять сами.
Каким образом, если это предпочтительнее? О чем следует знать? Или есть другой лучший способ?