Enumerable.Cast<TResult>(IEnumerable) Metode
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Mentransmisikan elemen dari ke IEnumerable jenis yang ditentukan.
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)
Jenis parameter
- TResult
Jenis untuk melemparkan elemen source
ke.
Parameter
- source
- IEnumerable
IEnumerable yang berisi elemen yang akan dilemparkan untuk mengetik TResult
.
Mengembalikan
Yang IEnumerable<T> berisi setiap elemen urutan sumber yang ditransmisikan ke jenis yang ditentukan.
Pengecualian
source
adalah null
.
Elemen dalam urutan tidak dapat ditransmisikan ke jenis TResult
.
Contoh
Contoh kode berikut menunjukkan cara menggunakan Cast<TResult>(IEnumerable) untuk mengaktifkan penggunaan operator kueri standar pada 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
Keterangan
Metode ini diimplementasikan dengan menggunakan eksekusi yang ditangguhkan. Nilai pengembalian langsung adalah objek yang menyimpan semua informasi yang diperlukan untuk melakukan tindakan. Kueri yang diwakili oleh metode ini tidak dijalankan sampai objek dijumlahkan baik dengan memanggil metodenya GetEnumerator
secara langsung atau dengan menggunakan foreach
di C# atau For Each
di Visual Basic.
Metode ini Cast<TResult>(IEnumerable) memungkinkan operator kueri standar untuk dipanggil pada koleksi non-generik dengan menyediakan informasi jenis yang diperlukan. Misalnya, ArrayList tidak menerapkan IEnumerable<T>, tetapi dengan memanggil Cast<TResult>(IEnumerable) pada ArrayList objek , operator kueri standar kemudian dapat digunakan untuk mengkueri urutan.
Jika elemen tidak dapat dikonversi ke jenis TResult
, metode ini melempar InvalidCastException.
Urutan sumber untuk metode ini adalah IEnumerable, yang berarti elemen memiliki jenis statis waktu kompilasi object
. Satu-satunya konversi jenis yang dilakukan oleh metode ini adalah konversi referensi dan konversi unboxing. Jenis runtime elemen dalam koleksi harus cocok dengan jenis target, atau dalam kasus jenis nilai, jenis runtime elemen harus merupakan hasil konversi tinju dari jenis target. Jenis konversi lainnya, seperti yang berada di antara jenis numerik yang berbeda, tidak diizinkan.
Untuk mendapatkan hanya elemen-elemen yang dapat dikonversi ke jenis TResult
, gunakan OfType metode alih-alih Cast<TResult>(IEnumerable).
Dalam ekspresi kueri, variabel iterasi yang ditik secara eksplisit diterjemahkan ke pemanggilan Cast<TResult>(IEnumerable). Contoh ini menunjukkan sintaks untuk variabel rentang yang ditik secara eksplisit.
from int i in objects
From i As Integer In objects
select
Gunakan klausa kueri untuk melakukan jenis konversi lain, seperti konversi numerik implisit. Contoh berikut menggunakan Cast
metode dan select
pernyataan untuk mengonversi urutan bilangan bulat kotak menjadi urutan ganda.
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)