SortedList 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
表示索引鍵/值組的集合,這些索引鍵/值組會依索引鍵排序,而且可由索引鍵和索引存取。
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 物件中的值。 |
方法
明確介面實作
IEnumerable.GetEnumerator() |
傳回逐一查看 SortedList的 IEnumerator。 |
擴充方法
Cast<TResult>(IEnumerable) |
將 IEnumerable 的項目轉換成指定的型別。 |
OfType<TResult>(IEnumerable) |
根據指定的型別篩選 IEnumerable 的專案。 |
AsParallel(IEnumerable) |
啟用查詢的平行處理。 |
AsQueryable(IEnumerable) |
將 IEnumerable 轉換成 IQueryable。 |
適用於
執行緒安全性
此類型的公用靜態 (Shared
) 成員是安全線程。 不保證任何實例成員都是安全線程。
只要集合未修改,SortedList 物件就可以同時支援多個讀取器。 若要保證 SortedList的線程安全性,所有作業都必須透過 Synchronized(SortedList) 方法傳回的包裝函式來完成。
透過集合列舉本質上不是安全線程的程式。 即使集合同步處理,其他線程仍然可以修改集合,這會導致列舉值擲回例外狀況。 若要保證列舉期間的線程安全性,您可以在整個列舉期間鎖定集合,或攔截其他線程所做的變更所產生的例外狀況。