Enumerable.Cast<TResult>(IEnumerable) Yöntem
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
öğesinin IEnumerable öğelerini belirtilen türe atar.
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ı yapılan tür.
Parametreler
- source
- IEnumerable
IEnumerable türüne TResult
yayınlanacak öğeleri içeren öğesi.
Döndürülenler
IEnumerable<T> Kaynak dizisinin her öğesini içeren bir belirtilen türe yayın.
Özel durumlar
source
, null
değeridir.
dizisindeki bir öğe türüne TResult
türlenemez.
Ö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.
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. Anında 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 uygulamazIEnumerable<T>, ancak nesnesi üzerinde ArrayList çağrısı Cast<TResult>(IEnumerable) yaparak, standart sorgu işleçleri daha sonra diziyi sorgulamak için kullanılabilir.
Bir öğe türüne TResult
dö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 object
sahip 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 kutu açma 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 TResult
dönüştürülebilen öğeleri elde etmek için yerine yöntemini Cast<TResult>(IEnumerable)kullanınOfType.
Sorgu ifadesinde, açıkça yazılan bir yineleme değişkeni çağrısına çevrilir Cast<TResult>(IEnumerable). Bu örnekte, açıkça yazılan bir aralık değişkeninin söz dizimi gösterilmektedir.
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, bir 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.
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin