我在一个类中有一个List作为属性:
public List<string> MyList { get; set; }
数据将被添加到该列表中,并最终将读取数据。读取数据后,其读取方式如下:
foreach(string str in my_obj.MyList)
{
// do something
}
我当然可以:
foreach(string str in my_obj.MyList.Sort())
{
// do something
}
但是,由于这是一个类库,所以我不希望该用户做任何事情。我也不希望用户必须Sort()
在类中调用方法。我理想的情况是,每次添加或读取项目时都要对列表进行排序。
您可以像这样更改属性,使用后备字段并在将列表返回给调用方之前在getter方法中对其进行排序:
private List<string> _myList;
public List<string> MyList
{
get { _myList.Sort(); return _myList; }
set { _myList = value; }
}
当然,当您尝试将新项目添加到列表中时,这将执行排序,例如,myobj.MyList.Add("foo");
为避免这种情况,您可以添加其他方法,例如AddToMyList
使用_myList.Add
代替,还可以更改属性类型IEnumerable<string>
以防止用户直接添加新项目。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句