0Pricing
C# Academy · Pelajaran

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>); // True

Penentuan 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); // 3

Inferensi 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.5

Antarmuka 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); // 3

Operator 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,3

var 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); // 3

Penentuan 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>); // True

Mengurangi 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); // True

Menggabungkan 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])); // 4

Pemeriksaan 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.
  • var tidak 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

  1. Sintaks Ekspresi Koleksi
  2. Elemen Spread
  3. Pengetikan Koleksi Berdasarkan Target
  4. Pembuat Koleksi
← Kembali ke C# Academy