每次添加项目时,对List <T>属性进行排序

约翰·马克·史密斯

我在一个类中有一个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()在类中调用方法。我理想的情况是,每次添加或读取项目时都要对列表进行排序。

塞尔曼·杨(Selman Young)

您可以像这样更改属性,使用后备字段并在将列表返回给调用方之前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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何对Collection <T>进行排序?

如何通过对象中的属性对List <T>进行排序

C#-按List <T>中对象的属性排序

使用List属性的计数对Realm对象进行排序

Yii2添加相关属性进行排序

使用apoc.convert.toTree时按属性对分层数据进行排序

按内部列表的属性计数对List <T>进行排序

IComparer <T>实现对List <T>排序的麻烦

如何通过Observable属性对项目数组进行排序?

如何在C#中对List <T>进行排序

列名称与数据属性名称不匹配时,按列进行角度排序

当属性为字符串时,如何按属性从左到右的顺序对对象数组进行排序?

合并到数组中时如何对属性键进行排序

通过两个不同的属性对项目进行排序

JS | 当并非所有属性都存在时,按属性对对象数组进行排序

从networkx中的shapefile创建图形时,如何保留或至少对边缘属性进行排序?

在List <t>内仅对KeyValuePair的一个元素进行排序

如何通过结果函数对List <T>进行排序?

当属性不一致时,如何基于属性对JS对象列表进行排序

Java:根据特定索引对List <List <T >>进行排序

使用其属性的属性对 List<T> 进行排序

如何使用可选的属性顺序按对象中的属性对 List<T> 进行排序

对列表中的项目进行排序

如何根据对象的属性对添加对象的位置进行排序

在将 List<T> 转换为 DataTable 时,从类中添加选择属性

对数组进行排序并添加新属性

如何在打印 Networkx 图的边属性时对边的顺序进行排序

List(Of T) 按 T 属性排序

按对象的未知属性对 List<T> 进行排序