Artikel ini adalah artikel cermin dari terjemahan mesin, silakan klik di sini untuk melompat ke artikel aslinya.

Melihat: 24117|Jawab: 1

[Sumber] Penjelasan rinci tentang C# Tuple VS ValueTuple

[Salin tautan]
Diposting pada 14/05/2018 16.37.48 | | | |
C# 7.0 telah keluar untuk sementara waktu, dan semua orang tahu bahwa ada pengoptimalan untuk tuple di fitur baru: ValueTuple. Berikut adalah contoh terperinci untuk menjelaskan Tuple VS ValueTuple dalam 10 menit untuk lebih memahami manfaat dan penggunaan ValueTuple.

Jika Anda cukup tahu tentang Tuple, Anda dapat melewati bagian "Tinjau Tuple" dan langsung ke bagian "ValueTuple Dijelaskan" untuk melihat penggunaan tuple nilai yang mempesona.



Lihat kembali Tuple

Tuple adalah fitur baru yang keluar dengan C# 4.0 dan tersedia di .Net Framework 4.0 dan yang lebih baru.

Tuple adalah struktur data dengan jumlah dan urutan elemen tertentu. Misalnya, rancang struktur data tiga kali lipat untuk menyimpan informasi siswa, yang berisi total tiga elemen, yang pertama adalah nama, yang kedua adalah usia, dan yang ketiga adalah tinggi.

Kegunaan spesifik tuple adalah sebagai berikut:

1. Cara membuat tuple

Default. Kerangka Kerja BersihTuple hanya mendukung 1 hingga 7 elemen tupleJika ada 8 elemen atau lebih, Anda perlu menggunakan properti bersarang dan Rest Tuple untuk mengimplementasikannya. Selain itu, kelas Tuple menyediakan metode statis untuk membuat objek tuple.

Buat tuple menggunakan konstruktor:

Bangun tuple menggunakan metode statis Tuple, mendukung hingga delapan elemen:
Catatan: Jenis Tuple yang dibangun di sini sebenarnya adalah Tuple<int, int, int, int, Tuple<int>>, jadi jenis data yang diperoleh oleh testTuple8.Rest adalah Tuple<int>, jadi untuk mendapatkan nilai yang tepat, Anda perlu mengambil properti Item1.

2. Mewakili sekumpulan data
Buat tuple di bawah ini untuk mewakili tiga informasi tentang siswa: nama, usia, dan tinggi badan, tanpa membuat kelas tambahan secara terpisah.

3. Mengembalikan beberapa nilai dari metode
Ketika sebuah fungsi perlu mengembalikan beberapa nilai, parameter out umumnya dapat digunakan, dan tuple dapat digunakan alih-alih keluar untuk mengembalikan beberapa nilai.
4. Transfer multi-nilai untuk metode parameter tunggal

Ketika parameter fungsi hanya satu jenis Objek, beberapa nilai parameter dapat diteruskan menggunakan implementasi tuple.

Terlepas dari metode praktis yang disebutkan di atas, tuple juga memiliki kekurangan yang signifikan:

  • Saat mengakses elemen, Anda hanya dapat mengaksesnya melalui ItemX, dan Anda perlu mengklarifikasi urutan elemen sebelum digunakan, dan nama atribut tidak memiliki arti praktis, yang tidak nyaman untuk diingat.
  • Ada hingga delapan elemen, dan jika Anda menginginkan lebih banyak, Anda hanya dapat memperluas dengan bersarang dengan elemen terakhir;
  • Tuple adalah jenis referensi, bukan jenis nilai seperti jenis sederhana lainnya, yang mengalokasikan ruang pada tumpukan dan dapat memiliki terlalu banyak pekerjaan pembuatan dan alokasi saat intensif CPU.


Oleh karena itu, jenis ValueTuple baru diperkenalkan di C# 7.0, yang dirinci di bagian berikut.

ValueTuple menjelaskan secara rinci

ValueTuple adalah salah satu fitur baru C# 7.0, tersedia untuk .Net Framework 4.7 dan yang lebih baru.

ValueTuple tidak memerlukan 4.7, selama nuget baik-baik saja, 4.7 built-in.
Selain itu, ValueTuple adalah jenis struktur, Microsoft merekomendasikan untuk tidak menggunakan struktur lebih dari 64 byte, yang juga efektif untuk ValueTuple.


Tuple nilai juga merupakan struktur data yang digunakan untuk mewakili jumlah dan urutan elemen tertentu, tetapi berbeda dari kelas tuple, dengan perbedaan utama berikut:

Tuple nilai adalah struktur, jenis nilai, bukan kelas, sedangkan tuple adalah kelas, jenis referensi;
Elemen tuple nilai bersifat variabel, bukan baca-saja, yaitu, mereka dapat mengubah nilai elemen dalam tuple nilai;
Tuple nilai anggota data adalah bidang, bukan atribut.
Penggunaan spesifik tuple nilai adalah sebagai berikut:

1. Cara membuat tuple nilai
Seperti kelas tuple, tuple nilai .Net Framework hanya mendukung 1 hingga 7 elemen tuple, dan jika ada 8 elemen atau lebih, Anda perlu menggunakan properti berlapis dan Rest dari tuple nilai untuk mengimplementasikannya. Selain itu, kelas ValueTuple dapat menyediakan metode statis untuk membuat objek tuple nilai.

Buat tuple menggunakan konstruktor:

Bangun tuple menggunakan metode statis Tuple, mendukung hingga delapan elemen:
Perhatikan bahwa jenis Tuple yang dibangun di sini sebenarnya adalah Tuple<int, int, <int>>, jadi jenis data yang diperoleh oleh testTuple8.Rest adalah Tuple<int>, jadi untuk mendapatkan nilai yang akurat, Anda perlu mengambil properti Item1.

Perbedaan Pengoptimalan:Ketika tuple nilai dengan lebih dari 7 elemen dibuat, nilai dalam tuple berlapis dapat diakses menggunakan ItemX berikut, dan untuk contoh di atas, untuk mengakses elemen kesepuluh, baik melalui testTuple10.Rest.Item3 atau testTuple10.Item10.
2. Mewakili sekumpulan data
Buat tuple nilai untuk mewakili tiga informasi tentang siswa: nama, usia, dan tinggi badan tanpa membuat kelas tambahan secara terpisah.
3. Mengembalikan beberapa nilai dari metode
Tuple nilai juga dapat mengembalikan beberapa nilai sebagai pengganti parameter keluar dalam definisi fungsi.
Perbedaan Pengoptimalan:Nilai yang dikembalikan dapat ditentukan dalam ValueTuple secara tidak dapat dijelaskan, menggunakan sintaks baru (,,) sebagai gantinya, seperti (string, int, uint):
Men-debug jenis studentInfo adalah triplet ValueType.

Perbedaan Pengoptimalan:Nilai yang dikembalikan dapat menentukan nama elemen untuk memfasilitasi pemahaman, penetapan dan akses memori:

Penetapan memori yang nyaman:



4. Transfer multi-nilai untuk metode parameter tunggal
Ketika parameter fungsi hanya satu jenis Objek, beberapa nilai dapat diteruskan menggunakan implementasi tuple nilai.
5. Dekonstruksi ValueTuple
Anda dapat menggunakan var (x, y) atau (var x, var y) untuk menyelesaikan elemen tuple untuk membuat variabel lokal, sambil menggunakan simbol "_" untuk mengabaikan elemen yang tidak diinginkan.
Seperti disebutkan di atas, ValueTuple membuat C# lebih sederhana dan lebih mudah digunakan. Keuntungan utama dibandingkan Tuple adalah sebagai berikut:

  • ValueTuple mendukung sintaks baru untuk nilai pengembalian fungsi" (,,)", membuat kode lebih sederhana;
  • Perlu dicatat di sini bahwa meskipun diberi nama, tetapi sebenarnya tuple nilai tidak mendefinisikan atribut atau bidang dari nama tersebut, nama aslinya masih ItemX, dan semua nama elemen hanya digunakan selama desain dan kompilasi, bukan saat runtime (jadi perhatikan operasi serialisasi dan deserialisasi jenis ini);
  • Beberapa atau semua tuple elemen dapat digunakan dengan lebih nyaman menggunakan metode penghancuran;
  • Tuple nilai adalah jenis nilai, yang lebih efisien digunakan daripada tuple jenis referensi, dan tuple nilai memiliki metode perbandingan yang dapat digunakan untuk membandingkan apakah mereka sama, lihat Detail:https://msdn.microsoft.com/en-us/library/system.valuetuple






Mantan:Alat mempopulerkan sains untuk arsitektur skala besar
Depan:HUAWEI CLOUD Merilis Laporan Resmi Blockchain untuk Mempercepat Implementasi Industri Teknologi Blockchain
Diposting pada 15/05/2018 11.41.00 |
Saya setuju!
Sanggahan:
Semua perangkat lunak, materi pemrograman, atau artikel yang diterbitkan oleh Code Farmer Network hanya untuk tujuan pembelajaran dan penelitian; Konten di atas tidak boleh digunakan untuk tujuan komersial atau ilegal, jika tidak, pengguna akan menanggung semua konsekuensi. Informasi di situs ini berasal dari Internet, dan sengketa hak cipta tidak ada hubungannya dengan situs ini. Anda harus sepenuhnya menghapus konten di atas dari komputer Anda dalam waktu 24 jam setelah pengunduhan. Jika Anda menyukai program ini, harap dukung perangkat lunak asli, pembelian pendaftaran, dan dapatkan layanan asli yang lebih baik. Jika ada pelanggaran, silakan hubungi kami melalui email.

Mail To:help@itsvse.com