System.ValueTuple vs. System.Tuple
Apakah Perbezaannya?
Sistem. ValueTuple dan System.Tuple ialah dua jenis yang boleh digunakan untuk mewakili tupel dalam C#. Walau bagaimanapun, terdapat beberapa perbezaan utama antara mereka.
Perbezaan Utama
Feature | ValueTuple | Tuple |
---|---|---|
Value type | Yes | No |
Mutability | Mutable | Immutable |
Item access | Fields | Properties |
Syntax sugar | Supports deconstruction and named arguments | Does not |
Performance | Allocation-free on the stack | Requires heap allocation |
ValueTuple
ValueTuple ialah nilai jenis (struct), yang bermaksud ia diperuntukkan pada timbunan dan tidak memerlukan pengumpulan sampah. Ia adalah struct boleh ubah, jadi nilainya boleh diubah selepas ia dibuat. ValueTuple mendedahkan itemnya melalui medan dan bukannya sifat.
Tuple
Tuple ialah jenis rujukan (kelas), yang bermaksud ia diperuntukkan pada timbunan dan memerlukan kutipan sampah . Ia adalah kelas yang tidak berubah, jadi nilainya tidak boleh diubah selepas ia dibuat. Tuple mendedahkan itemnya melalui sifat.
Mengapa Menggunakan ValueTuple?
Menggunakan ValueTuple mempunyai beberapa kelebihan berbanding menggunakan Tuple:
Contoh
Menggunakan ValueTuple sintaks:
public (int sum, int count) DoStuff(IEnumerable<int> values) { var result = (sum: 0, count: 0); foreach (var value in values) { result.sum += value; result.count++; } return result; }
Menggunakan penyahbinaan:
var (sum, count) = DoStuff(Enumerable.Range(0, 10)); Console.WriteLine($"Sum: {sum}, Count: {count}");
Atas ialah kandungan terperinci ValueTuple vs. Tuple dalam C#: Apakah Perbezaan Utama dan Bilakah Anda Harus Menggunakan Setiap?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!