簡體   English   中英

C#在派生類中設置基礎對象

[英]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() 但是這種方法不會改變原始對象。 它會返回一個新的。

有沒有辦法對字典進行排序?

您嘗試的方法至少存在三個問題:

  1. 首先, 正如羅伯特指出的那樣ConcurrentDictionary<TKey, TValue>不保留順序。 它沒有訂購機制,如果確實如此,將來不會保證該訂單。
  2. thisbase標識符是只讀的。 你不能分配它。
  3. base類型是ConcurrentDictionary<int, string> (在您的示例中),但OrderByDescending()方法的返回值的類型是IEnumerable<KeyValuePair<int, string>>因此無論如何都不能賦值給變量base

如果你想要一個有序的字典,你需要使用其他東西,例如SortedDictionary<TKey, TValue>SortedList<TKey, TValue> 當然,這些都不是線程安全的,因此如果同時使用它們,您需要采取額外的步驟來安全地使用它們。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM