2011-12-01 29 views
1

我有一个通用的清单,并已完成将项目添加到列表<> sorts it?

mylist.Sort(Comparison<TypeA>(delegate(TypeA a, TypeA b) 
{ return a.Text.CompareTo(b.Text)) } 

上面运行后,我做mylist.Add(someObject)。这是Text属性以“T”开始。列表中还有一个以"V"开头的项目。它不是最后添加的某个对象,而是在从"V"开始的项目之前。这让我觉得这种排序继续适用。是这样吗?

如果是这样,我该如何添加这个新项目作为最后?

+4

你可以添加一个简短但完整的程序来演示问题吗? – dtb

+2

不,这不是这种情况。 '列表'不是自然排序的。 –

回答

5

这绝对是错误的。 List<>.Sort执行一次排序,并添加额外的项目将它们添加到最后。

此行为仅在mylistSortedList或类似情况时才可能。如果你没有自己初始化它,你应该检查运行时类型,因为即使编译时类型可能是IList,你可能会得到SortedList。但这是不太可能的。