共用方式為


SortedList 類別

定義

表示索引鍵/值組的集合,這些索引鍵/值組會依索引鍵排序,而且可由索引鍵和索引存取。

public ref class SortedList : System::Collections::IDictionary
public ref class SortedList : ICloneable, System::Collections::IDictionary
public class SortedList : System.Collections.IDictionary
public class SortedList : ICloneable, System.Collections.IDictionary
[System.Serializable]
public class SortedList : ICloneable, System.Collections.IDictionary
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public class SortedList : ICloneable, System.Collections.IDictionary
type SortedList = class
    interface ICollection
    interface IEnumerable
    interface IDictionary
type SortedList = class
    interface ICollection
    interface IEnumerable
    interface IDictionary
    interface ICloneable
[<System.Serializable>]
type SortedList = class
    interface IDictionary
    interface ICollection
    interface IEnumerable
    interface ICloneable
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type SortedList = class
    interface IDictionary
    interface ICollection
    interface IEnumerable
    interface ICloneable
Public Class SortedList
Implements IDictionary
Public Class SortedList
Implements ICloneable, IDictionary
繼承
SortedList
屬性
實作

範例

下列程式代碼範例示範如何建立和初始化 SortedList 物件,以及如何列印出其索引鍵和值。

#using <system.dll>

using namespace System;
using namespace System::Collections;
public ref class SamplesSortedList
{
public:
   static void PrintKeysAndValues( SortedList^ myList )
   {
      Console::WriteLine( "\t-KEY-\t-VALUE-" );
      for ( int i = 0; i < myList->Count; i++ )
      {
         Console::WriteLine( "\t{0}:\t{1}", myList->GetKey( i ), myList->GetByIndex( i ) );

      }
      Console::WriteLine();
   }

};

int main()
{

   // Creates and initializes a new SortedList.
   SortedList^ mySL = gcnew SortedList;
   mySL->Add( "Third", "!" );
   mySL->Add( "Second", "World" );
   mySL->Add( "First", "Hello" );

   // Displays the properties and values of the SortedList.
   Console::WriteLine( "mySL" );
   Console::WriteLine( "  Count:    {0}", mySL->Count );
   Console::WriteLine( "  Capacity: {0}", mySL->Capacity );
   Console::WriteLine( "  Keys and Values:" );
   SamplesSortedList::PrintKeysAndValues( mySL );
}

/*
This code produces the following output.

mySL
Count:    3
Capacity: 16
Keys and Values:
-KEY-    -VALUE-
First:    Hello
Second:    World
Third:    !
*/
using System;
using System.Collections;

public class SamplesSortedList2
{
    public static void Main()
    {
        // Creates and initializes a new SortedList.
        SortedList mySL = new SortedList();
        mySL.Add("Third", "!");
        mySL.Add("Second", "World");
        mySL.Add("First", "Hello");

        // Displays the properties and values of the SortedList.
        Console.WriteLine("mySL");
        Console.WriteLine("  Count:    {0}", mySL.Count);
        Console.WriteLine("  Capacity: {0}", mySL.Capacity);
        Console.WriteLine("  Keys and Values:");
        PrintKeysAndValues(mySL);
    }

    public static void PrintKeysAndValues(SortedList myList)
    {
        Console.WriteLine("\t-KEY-\t-VALUE-");
        for (int i = 0; i < myList.Count; i++)
        {
            Console.WriteLine("\t{0}:\t{1}", myList.GetKey(i), myList.GetByIndex(i));
        }
        Console.WriteLine();
    }
}
/*
This code produces the following output.

mySL
  Count:    3
  Capacity: 16
  Keys and Values:
    -KEY-    -VALUE-
    First:    Hello
    Second:    World
    Third:    !
*/
Imports System.Collections

Public Class SamplesSortedList    
    
    Public Shared Sub Main()
        
        ' Creates and initializes a new SortedList.
        Dim mySL As New SortedList()
        mySL.Add("Third", "!")
        mySL.Add("Second", "World")
        mySL.Add("First", "Hello")
        
        ' Displays the properties and values of the SortedList.
        Console.WriteLine("mySL")
        Console.WriteLine("  Count:    {0}", mySL.Count)
        Console.WriteLine("  Capacity: {0}", mySL.Capacity)
        Console.WriteLine("  Keys and Values:")
        PrintKeysAndValues(mySL)
    End Sub
    
    Public Shared Sub PrintKeysAndValues(myList As SortedList)
        Console.WriteLine(ControlChars.Tab & "-KEY-" & ControlChars.Tab & _
           "-VALUE-")
        Dim i As Integer
        For i = 0 To myList.Count - 1
            Console.WriteLine(ControlChars.Tab & "{0}:" & ControlChars.Tab & _
               "{1}", myList.GetKey(i), myList.GetByIndex(i))
        Next i
        Console.WriteLine()
    End Sub
End Class

' This code produces the following output.
' 
' mySL
'   Count:    3
'   Capacity: 16
'   Keys and Values:
'     -KEY-     -VALUE-
'     First:    Hello
'     Second:   World
'     Third:    !

備註

SortedList 專案可以透過索引鍵來存取,例如任何 IDictionary 實作中的專案,或透過索引來存取,例如任何 IList 實作中的專案。

重要

不建議您將 SortedList 類別用於新的開發。 相反地,我們建議您使用泛型 System.Collections.Generic.SortedList<TKey,TValue> 類別。 如需詳細資訊,請參閱 gitHub 上不應 使用非泛型集合

SortedList 物件會在內部維護兩個數位來儲存清單的專案;也就是說,索引鍵的一個陣列,另一個陣列用於相關聯的值。 每個元素都是索引鍵/值組,可做為 DictionaryEntry 對象來存取。 索引鍵不能 null,但值可以是 。

SortedList 物件的容量是 SortedList 可以保存的項目數目。 當元素新增至 SortedList時,容量會視需要透過重新配置自動增加。 呼叫 TrimToSize 或明確設定 Capacity 屬性,即可減少容量。

僅限 .NET Framework 對於非常大的 SortedList 物件,您可以將運行時間環境中 <gcAllowVeryLargeObjects> 組態 true 專案的 enabled 屬性,將 64 位系統上的最大容量增加到 20 億個元素。

SortedList 物件的元素會根據建立 SortedList 時指定的特定 IComparer 實作,或根據索引鍵本身所提供的 IComparable 實作,依索引鍵本身所指定的特定 IComparer 實作來排序。 不論是哪一種情況,SortedList 都不允許重複的索引鍵。

索引序列是以排序順序為基礎。 加入專案時,它會以正確的排序順序插入 SortedList,而編製索引會據以調整。 拿掉專案時,索引也會據以調整。 因此,特定索引鍵/值組的索引可能會隨著專案加入或從 SortedList 物件中移除而變更。

SortedList 物件上的作業往往比 Hashtable 物件上的作業慢,因為排序。 不過,SortedList 藉由允許透過相關聯的索引鍵或索引存取值,以提供更大的彈性。

這個集合中的元素可以使用整數索引來存取。 此集合中的索引是以零起始。

C# 語言的 foreach 語句 (在 Visual Basic 中for each) 會傳回集合中專案類型的物件。 由於 SortedList 物件的每個元素都是索引鍵/值組,因此項目類型不是索引鍵的類型或值的型別。 相反地,項目類型會 DictionaryEntry。 例如:

for each (DictionaryEntry de in mySortedList)
{
    //...
}
foreach (DictionaryEntry de in mySortedList)
{
    //...
}
For Each de As DictionaryEntry In mySortedList
    '...
Next de

foreach 語句是列舉值周圍的包裝函式,它只允許讀取集合,而不允許寫入集合。

建構函式

SortedList()

初始化空的 SortedList 類別的新實例,具有預設的初始容量,並根據每個新增至 SortedList 物件的索引鍵所實作的 IComparable 介面排序。

SortedList(IComparer, Int32)

初始化空 SortedList 類別的新實例、具有指定的初始容量,並根據指定的 IComparer 介面排序。

SortedList(IComparer)

初始化空 SortedList 類別的新實例、具有預設的初始容量,並根據指定的 IComparer 介面排序。

SortedList(IDictionary, IComparer)

初始化 SortedList 類別的新實例,其中包含從指定字典複製的元素、具有與複製之項目數目相同的初始容量,並根據指定的 IComparer 介面排序。

SortedList(IDictionary)

初始化 SortedList 類別的新實例,其中包含從指定字典複製的元素、具有與複製之元素數目相同的初始容量,並根據每個索引鍵所實作的 IComparable 介面排序。

SortedList(Int32)

初始化空的 SortedList 類別的新實例、具有指定的初始容量,並根據新增至 SortedList 物件的每個索引鍵所實作的 IComparable 介面排序。

屬性

Capacity

取得或設定 SortedList 物件的容量。

Count

取得包含在 SortedList 物件中的項目數目。

IsFixedSize

取得值,指出 SortedList 物件是否具有固定大小。

IsReadOnly

取得值,指出 SortedList 物件是否為唯讀。

IsSynchronized

取得值,指出對 SortedList 物件的存取是否同步處理 (線程安全)。

Item[Object]

取得或設定與 SortedList 物件中特定索引鍵相關聯的值。

Keys

取得 SortedList 物件中的索引鍵。

SyncRoot

取得對象,這個物件可用來同步存取 SortedList 物件。

Values

取得 SortedList 物件中的值。

方法

Add(Object, Object)

將具有指定索引鍵和值的專案加入至 SortedList 物件。

Clear()

SortedList 物件中移除所有專案。

Clone()

建立 SortedList 對象的淺層複本。

Contains(Object)

判斷 SortedList 物件是否包含特定索引鍵。

ContainsKey(Object)

判斷 SortedList 物件是否包含特定索引鍵。

ContainsValue(Object)

判斷 SortedList 物件是否包含特定值。

CopyTo(Array, Int32)

從陣列中指定的索引開始,將 SortedList 項目複製到一維 Array 物件。

Equals(Object)

判斷指定的物件是否等於目前的物件。

(繼承來源 Object)
GetByIndex(Int32)

取得位於 SortedList 物件之指定索引處的值。

GetEnumerator()

傳回逐一查看 SortedList 物件的 IDictionaryEnumerator 物件。

GetHashCode()

做為預設哈希函式。

(繼承來源 Object)
GetKey(Int32)

取得位於 SortedList 物件之指定索引鍵。

GetKeyList()

取得 SortedList 物件中的索引鍵。

GetType()

取得目前實例的 Type

(繼承來源 Object)
GetValueList()

取得 SortedList 物件中的值。

IndexOfKey(Object)

傳回 SortedList 物件中指定索引鍵的以零起始的索引。

IndexOfValue(Object)

傳回 SortedList 物件中第一個出現指定值之以零起始的索引。

MemberwiseClone()

建立目前 Object的淺層複本。

(繼承來源 Object)
Remove(Object)

SortedList 物件中移除具有指定索引鍵的專案。

RemoveAt(Int32)

拿掉位於 SortedList 物件之指定索引處的專案。

SetByIndex(Int32, Object)

取代 SortedList 物件中特定索引的值。

Synchronized(SortedList)

傳回 SortedList 物件的同步處理(安全線程)包裝函式。

ToString()

傳回表示目前 物件的字串。

(繼承來源 Object)
TrimToSize()

將容量設定為 SortedList 對象中實際項目數目。

明確介面實作

IEnumerable.GetEnumerator()

傳回逐一查看 SortedListIEnumerator

擴充方法

Cast<TResult>(IEnumerable)

IEnumerable 的項目轉換成指定的型別。

OfType<TResult>(IEnumerable)

根據指定的型別篩選 IEnumerable 的專案。

AsParallel(IEnumerable)

啟用查詢的平行處理。

AsQueryable(IEnumerable)

IEnumerable 轉換成 IQueryable

適用於

執行緒安全性

此類型的公用靜態 (Shared) 成員是安全線程。 不保證任何實例成員都是安全線程。

只要集合未修改,SortedList 物件就可以同時支援多個讀取器。 若要保證 SortedList的線程安全性,所有作業都必須透過 Synchronized(SortedList) 方法傳回的包裝函式來完成。

透過集合列舉本質上不是安全線程的程式。 即使集合同步處理,其他線程仍然可以修改集合,這會導致列舉值擲回例外狀況。 若要保證列舉期間的線程安全性,您可以在整個列舉期間鎖定集合,或攔截其他線程所做的變更所產生的例外狀況。

另請參閱