Enumerable.Cast<TResult>(IEnumerable) Yöntem

Tanım

öğesinin IEnumerable öğelerini belirtilen türe yazar.

public:
generic <typename TResult>
[System::Runtime::CompilerServices::Extension]
 static System::Collections::Generic::IEnumerable<TResult> ^ Cast(System::Collections::IEnumerable ^ source);
public static System.Collections.Generic.IEnumerable<TResult> Cast<TResult>(this System.Collections.IEnumerable source);
static member Cast : System.Collections.IEnumerable -> seq<'Result>
<Extension()>
Public Function Cast(Of TResult) (source As IEnumerable) As IEnumerable(Of TResult)

Tür Parametreleri

TResult

öğelerinin source ataması için kullanılan tür.

Parametreler

source
IEnumerable

IEnumerable türüne TResultyayınlanacak öğeleri içeren öğesi.

Döndürülenler

IEnumerable<TResult>

IEnumerable<T> Kaynak dizisinin her öğesini içeren bir belirtilen türe yayın.

Özel durumlar

source, null'e eşittir.

dizisindeki bir öğe türüne TResulttürlenemez.

Örnekler

Aşağıdaki kod örneği, bir Cast<TResult>(IEnumerable)üzerinde standart sorgu işleçlerinin kullanımını etkinleştirmek için nasıl kullanılacağını ArrayList gösterir.

System.Collections.ArrayList fruits = new System.Collections.ArrayList();
fruits.Add("mango");
fruits.Add("apple");
fruits.Add("lemon");

IEnumerable<string> query =
    fruits.Cast<string>().OrderBy(fruit => fruit).Select(fruit => fruit);

// The following code, without the cast, doesn't compile.
//IEnumerable<string> query1 =
//    fruits.OrderBy(fruit => fruit).Select(fruit => fruit);

foreach (string fruit in query)
{
    Console.WriteLine(fruit);
}

// This code produces the following output:
//
// apple
// lemon
// mango
' Create an ArrayList and add items to it.
Dim fruits As New System.Collections.ArrayList()
fruits.Add("mango")
fruits.Add("apple")
fruits.Add("lemon")

' Call Cast(Of String) to cast the ArrayList elements to strings.
Dim query As IEnumerable(Of String) =
fruits.Cast(Of String)().OrderBy(Function(fruit) fruit).Select(Function(fruit) fruit)

'' The following code, without the cast, doesn't compile.
'Dim query As IEnumerable(Of String) = _
'    fruits.OrderBy(Function(fruit) fruit).Select(Function(fruit) fruit)

Dim output As New System.Text.StringBuilder
For Each fruit As String In query
    output.AppendLine(fruit)
Next

' Display the output.
Console.WriteLine(output.ToString())

' This code produces the following output:
'
' apple
' lemon
' mango

Açıklamalar

Bu yöntem ertelenen yürütme kullanılarak uygulanır. Hemen dönüş değeri, eylemi gerçekleştirmek için gereken tüm bilgileri depolayan bir nesnedir. Bu yöntemle temsil edilen sorgu, nesne doğrudan GetEnumerator yöntemini çağırarak veya C# içinde foreach veya Visual Basic'de For Each kullanılarak numaralandırılana kadar yürütülür.

yöntemi, Cast<TResult>(IEnumerable) standart sorgu işleçlerinin gerekli tür bilgilerini sağlayarak genel olmayan koleksiyonlarda çağrılmalarını sağlar. Örneğin, ArrayList uygulamazIEnumerable<T>, ancak nesne üzerinde Cast<TResult>(IEnumerable) çağrılarakArrayList, standart sorgu işleçleri daha sonra diziyi sorgulamak için kullanılabilir.

Bir öğe türüne TResultdönüştürülemezse, bu yöntem bir InvalidCastExceptionoluşturur.

Bu yöntemin kaynak dizisi şeklindedir IEnumerable. Bu, öğelerin derleme zamanı statik türüne objectsahip olduğu anlamına gelir. Bu yöntem tarafından gerçekleştirilen tek tür dönüştürmeleri, başvuru dönüştürmeleri ve kutuları kaldırma dönüştürmeleridir. Koleksiyondaki öğelerin çalışma zamanı türü hedef türle eşleşmelidir veya değer türleri söz konusu olduğunda, öğelerin çalışma zamanı türü hedef türün kutulama dönüştürmesinin sonucu olmalıdır. Farklı sayısal türler arasındakiler gibi diğer dönüştürme türlerine izin verilmez.

Yalnızca türüne TResultdönüştürülebilecek öğeleri elde etmek için yerine yöntemini OfTypekullanınCast<TResult>(IEnumerable).

Sorgu ifadesinde, açıkça yazılan bir yineleme değişkeni çağrısına çevrilir Cast<TResult>(IEnumerable). Bu örnek, açıkça yazılan aralık değişkeninin söz dizimini gösterir.

from int i in objects
From i As Integer In objects

select Örtük sayısal dönüştürmeler gibi diğer dönüştürme türlerini gerçekleştirmek için sorgunun yan tümcesini kullanın. Aşağıdaki örnek, kutulanmış tamsayı dizisini Cast çiftler dizisine dönüştürmek için hem yöntemini select hem de deyimini kullanır.

IEnumerable sequence = Enumerable.Range(0, 10);
var doubles = from int item in sequence
                select (double)item;
Dim sequence As IEnumerable = Enumerable.Range(0, 10)
Dim doubles = From item As Integer In sequence
                Select CType(item, Double)

Şunlara uygulanır

Ayrıca bkz.