Pengetikan Koleksi Berdasarkan Target
Biarkan tipe target menentukan pembuatan koleksi.
Pengetikan Koleksi Berdasarkan Target adalah pelajaran C# Academy gratis di CoddyKit. Ini adalah pelajaran 3 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar C# Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus C# Academy mencakup 4 pelajaran total.
Apa Itu Penentuan Tipe oleh Konteks
Penentuan tipe oleh konteks berarti kompilator menyimpulkan apa yang harus dibuat oleh ekspresi koleksi berdasarkan konteks penggunaannya, bukan berdasarkan tipe eksplisit di sisi kanan.
using System;
int[] numbers = [1, 2, 3]; // target type is int[]
Console.WriteLine(numbers.GetType().Name); // Int32[]Tipe Tujuan Menentukan Hasil
Literal yang sama dapat menjadi tipe konkret yang berbeda, bergantung pada tipe variabel, parameter, atau pengembalian yang menerimanya.
using System;
using System.Collections.Generic;
int[] asArray = [1, 2, 3];
List<int> asList = [1, 2, 3];
Console.WriteLine(asArray is int[]); // True
Console.WriteLine(asList is List<int>); // TruePenentuan Tipe oleh Konteks dalam Pemanggilan Metode
Saat parameter metode merupakan tipe koleksi, tipe literal argumen ditentukan oleh konteks parameter tersebut.
using System;
using System.Collections.Generic;
static void Show(List<int> items) =>
Console.WriteLine(string.Join(",", items));
Show([10, 20, 30]); // target-typed to List<int>Penentuan Tipe oleh Konteks dalam Nilai Pengembalian
Badan metode dapat mengembalikan ekspresi koleksi tanpa tipe; tipe pengembalian yang dideklarasikan menyediakan konteksnya.
using System;
using System.Collections.Generic;
static List<string> Tags() => ["csharp", "dotnet", "ranges"];
Console.WriteLine(Tags().Count); // 3Inferensi Tipe Elemen
Tipe elemen berasal dari tipe tujuan. Jika tujuannya adalah double[], literal bilangan bulat akan diperlebar menjadi double secara otomatis.
using System;
double[] values = [1, 2, 3]; // ints widen to double
Console.WriteLine(values[0] + 0.5); // 1.5Antarmuka sebagai Tipe Tujuan
Ekspresi koleksi dapat menargetkan antarmuka seperti IEnumerable<T>, IReadOnlyList<T>, atau ICollection<T>; kompilator memilih tipe konkret yang sesuai.
using System;
using System.Collections.Generic;
IReadOnlyList<int> ro = [1, 2, 3];
Console.WriteLine(ro.Count); // 3Operator Ternary dan Penentuan Tipe oleh Konteks
Kedua cabang kondisi dapat berupa ekspresi koleksi, dan masing-masing tipenya ditentukan oleh konteks tipe hasil yang sama.
using System;
bool useDefaults = false;
int[] config = useDefaults ? [0, 0, 0] : [1, 2, 3];
Console.WriteLine(string.Join(",", config)); // 1,2,3var Bukan Tipe Tujuan
Anda tidak dapat menulis var x = [1, 2, 3]; karena var tidak menyediakan tipe tujuan. Berikan tipe eksplisit, atau gunakan ekspresi tersebut di tempat yang mengharapkan suatu tipe.
using System;
// var x = [1, 2, 3]; // compile error: no target type
int[] x = [1, 2, 3]; // ok
Console.WriteLine(x.Length); // 3Penentuan Tipe oleh Konteks dengan Elemen Sebar
Penentuan tipe oleh konteks dan elemen sebar saling bekerja sama: tipe tujuan menentukan tipe koleksi akhir, sedangkan elemen sebar menyediakan isinya.
using System;
using System.Collections.Generic;
int[] src = [1, 2, 3];
List<int> copy = [..src]; // copies into a List<int>
Console.WriteLine(copy is List<int>); // TrueMengurangi Kebisingan Sintaks
Penentuan tipe oleh konteks menghilangkan pengulangan nama tipe. Bandingkan bentuk lama yang berlebihan dengan bentuk baru yang ringkas.
using System;
// old: type repeated
int[] oldWay = new int[] { 1, 2, 3 };
// new: type only on the left
int[] newWay = [1, 2, 3];
Console.WriteLine(oldWay.Length == newWay.Length); // TrueMenggabungkan Semuanya
Di sini sebuah pembantu menerima koleksi apa pun yang hanya dapat dibaca, dan pemanggil dapat meneruskan literal yang tipenya ditentukan oleh konteks dengan bebas.
using System;
using System.Collections.Generic;
static int Count(IReadOnlyCollection<int> c) => c.Count;
Console.WriteLine(Count([1, 2, 3, 4])); // 4Pemeriksaan Singkat
Uji pemahaman Anda tentang penentuan tipe oleh konteks.
Rangkuman
Anda telah mempelajari cara tipe ekspresi koleksi ditentukan oleh konteks.
- Tipe tujuan (variabel, parameter, atau pengembalian) mengarahkan pembuatannya.
- Tipe elemen dapat diperlebar agar sesuai dengan tipe tujuan.
- Antarmuka seperti
IReadOnlyList<T>merupakan tipe tujuan yang valid. vartidak dapat menjadi tipe tujuan.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Pengetikan Koleksi Berdasarkan Target” gratis?
Ya — teks lengkap “Pengetikan Koleksi Berdasarkan Target” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus C# Academy, upgrade ke CoddyKit PRO. Kursus C# Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Pengetikan Koleksi Berdasarkan Target”?
Biarkan tipe target menentukan pembuatan koleksi. Kamu berlatih C# Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai C# Academy?
Tidak diperlukan pengalaman sebelumnya. C# Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 3 dari 4.
Berapa lama pelajaran “Pengetikan Koleksi Berdasarkan Target” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran C# Academy ini?
Ya. Setiap pelajaran C# Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Sintaks Ekspresi Koleksi
- Elemen Spread
- Pengetikan Koleksi Berdasarkan Target
- Pembuat Koleksi