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

Tanım

Öğesinin öğelerini IEnumerable belirtilen türe yayınlar.Casts the elements of an IEnumerable to the specified type.

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);
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 türüne eklenecek tür source .The type to cast the elements of source to.

Parametreler

source
IEnumerable

IEnumerableTürüne eklenecek öğeleri içeren öğesi TResult .The IEnumerable that contains the elements to be cast to type TResult.

Döndürülenler

IEnumerable<TResult>

IEnumerable<T>Kaynak dizisinin her öğesini belirtilen türe saçan içeren bir.An IEnumerable<T> that contains each element of the source sequence cast to the specified type.

Özel durumlar

source, null değeridir.source is null.

Dizideki bir öğe türüne atanamaz TResult .An element in the sequence cannot be cast to type TResult.

Örnekler

Aşağıdaki kod örneğinde, Cast<TResult>(IEnumerable) bir üzerinde standart sorgu işleçleri kullanımını etkinleştirmek için nasıl kullanılacağı gösterilmektedir ArrayList .The following code example demonstrates how to use Cast<TResult>(IEnumerable) to enable the use of the standard query operators on an ArrayList.

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 ertelenmiş yürütme kullanılarak uygulanır.This method is implemented by using deferred execution. Anında dönüş değeri, eylemi gerçekleştirmek için gereken tüm bilgileri depolayan bir nesnedir.The immediate return value is an object that stores all the information that is required to perform the action. Bu yöntem tarafından temsil edilen sorgu, nesne GetEnumerator yöntemi doğrudan çağırarak ya da foreach Visual C# ' de veya Visual Basic kullanılarak numaralandırılana kadar yürütülmez For Each .The query represented by this method is not executed until the object is enumerated either by calling its GetEnumerator method directly or by using foreach in Visual C# or For Each in Visual Basic.

Cast<TResult>(IEnumerable)Yöntemi, standart sorgu işleçlerinin gerekli tür bilgilerini sağlayarak genel olmayan koleksiyonlar üzerinde çağrılmasını sağlar.The Cast<TResult>(IEnumerable) method enables the standard query operators to be invoked on non-generic collections by supplying the necessary type information. Örneğin, ArrayList uygulamaz, IEnumerable<T> ancak Cast<TResult>(IEnumerable) nesne üzerinde çağırarak ArrayList Standart sorgu işleçleri diziyi sorgulamak için kullanılabilir.For example, ArrayList does not implement IEnumerable<T>, but by calling Cast<TResult>(IEnumerable) on the ArrayList object, the standard query operators can then be used to query the sequence.

Bir öğe türüne dönüştürülemiyorsa TResult , bu yöntem bir oluşturur InvalidCastException .If an element cannot be converted to type TResult, this method throws a InvalidCastException.

Bu yöntemin kaynak sırası, IEnumerable öğelerin derleme zamanı statik türüne sahip olduğu anlamına gelir object .The source sequence for this method is IEnumerable, which means the elements have the compile-time static type of object. Bu yöntem tarafından gerçekleştirilen tek tür dönüştürmeleri, başvuru dönüştürmelerinde ve kutudan çıkarma dönüştürmelerinde.The only type conversions that are performed by this method are reference conversions and unboxing conversions. Koleksiyondaki öğelerin çalışma zamanı türü hedef türle eşleşmelidir veya değer türlerinde, öğelerin çalışma zamanı türü, hedef türün kutulama dönüştürmesinin sonucu olmalıdır.The runtime type of the elements in the collection must match the target type, or in the case of value types, the runtime type of elements must be the result of a boxing conversion of the target type. Farklı sayısal türler arasında olanlar gibi diğer dönüştürme türlerine izin verilmez.Other conversion types, such as those between different numeric types, are not allowed.

Yalnızca türüne dönüştürülebilen öğeleri almak için TResult OfType yerine yöntemini kullanın Cast<TResult>(IEnumerable) .To obtain only those elements that can be converted to type TResult, use the OfType method instead of Cast<TResult>(IEnumerable).

Sorgu ifadesinde, açıkça yazılmış bir yineleme değişkeni bir çağrısına çevrilir Cast<TResult>(IEnumerable) .In a query expression, an explicitly typed iteration variable translates to an invocation of Cast<TResult>(IEnumerable). Bu örnek, açıkça yazılmış bir Aralık değişkeni için söz dizimini gösterir.This example shows the syntax for an explicitly typed range variable.

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 bir sorgunun yan tümcesini kullanın.Use the select clause of a query to perform other conversion types, like the implicit numeric conversions. Aşağıdaki örnek, Cast select paketlenmiş tamsayılar dizisini Double dizisine dönüştürmek için hem yöntemi hem de bir ifadesini kullanır.The following example uses both the Cast method and a select statement to convert a sequence of boxed integers to a sequence of doubles.

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.