[英]C# Set Base Object in Derived Class
我有以下課程:
public class MyDict: ConcurrentDictionary<int, string>
{
public GenerateContent()
{
for(int i = 0 ; i < 10 ; i++)
{
this.TryAdd(i, i.ToString());
}
base = this.OrderByDescending(v => v.Key); // --> Error
}
}
在向基類添加一些值之后,我想對它進行排序。 但ConcurrentDictionary<>
不提供Sort()
方法。 因此我使用了OrderByDescending()
。 但是這種方法不會改變原始對象。 它會返回一個新的。
有沒有辦法對字典進行排序?
您嘗試的方法至少存在三個問題:
ConcurrentDictionary<TKey, TValue>
不保留順序。 它沒有訂購機制,如果確實如此,將來不會保證該訂單。 this
的base
標識符是只讀的。 你不能分配它。 base
類型是ConcurrentDictionary<int, string>
(在您的示例中),但OrderByDescending()
方法的返回值的類型是IEnumerable<KeyValuePair<int, string>>
因此無論如何都不能賦值給變量base
。 如果你想要一個有序的字典,你需要使用其他東西,例如SortedDictionary<TKey, TValue>
或SortedList<TKey, TValue>
。 當然,這些都不是線程安全的,因此如果同時使用它們,您需要采取額外的步驟來安全地使用它們。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.