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

Tanım

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

C#
public static System.Collections.Generic.IEnumerable<TResult> Cast<TResult> (this System.Collections.IEnumerable source);

Tür Parametreleri

TResult

öğelerinin source ataması yapı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 değeridir.

Dizideki bir öğe türüne TResultdönüştürilemez.

Örnekler

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

C#
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

Açıklamalar

Bu yöntem ertelenmiş 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, doğrudan yöntemini çağırarak GetEnumerator veya C# içinde veya For Each Visual Basic'te kullanarak foreach nesne 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 uygulamaz IEnumerable<T>, ancak nesnesini çağırarak Cast<TResult>(IEnumerable)ArrayList , standart sorgu işleçleri daha sonra diziyi sorgulamak için kullanılabilir.

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

Bu yöntemin kaynak dizisi olur 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 kutulama 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 Cast<TResult>(IEnumerable)yöntemini kullanınOfType.

Sorgu ifadesinde, açıkça yazılan bir yineleme değişkeni çağrısına Cast<TResult>(IEnumerable)dönüşür. Bu örnekte, açıkça yazılan aralık değişkeninin söz dizimi gösterilmektedir.

C#
from int i 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, bir kutulu tamsayı dizisini çiftler dizisine dönüştürmek için hem yöntemini select hem de Cast deyimini kullanır.

C#
IEnumerable sequence = Enumerable.Range(0, 10);
var doubles = from int item in sequence
                select (double)item;

Şunlara uygulanır

Ürün Sürümler
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

Ayrıca bkz.