pada prinsipnya:
1. Mirip dengan template C++, inti dari generik C# adalah tipenya.
Ini mendefinisikan suatu tipe, dan setiap objek yang dipakai adalah tipe tertentu, sehingga disebut tipe tipe
2. Ini dibagi menjadi dua situasi ketika dipakai:
Tipe referensi dan tipe nilai
Karena tipe referensi pada dasarnya adalah sebuah pointer, yang merupakan alamat memori, jumlah byte yang digunakan oleh variabel pointer adalah sama pada mesin dengan panjang bit tertentu.
Inti dari generik adalah sebagai suatu tipe dari tipe yang ditentukan, setelah dikompilasi, akan ada kode biner yang menjelaskan karakteristik dari definisi tipe tersebut, yang disimpan dalam memori.
Di sini pertama-tama kami menjelaskan definisi tipe dan alokasi memori objek yang dipakai setelah mengkompilasi kode sumber. Setelah kode sumber dikompilasi, file program (seperti file exe) harus diprogram dan dimuat ke dalam ruang memori selama eksekusi (OS modern). menggunakan pemetaan. , secara logis menempati memori, secara fisik menggunakan metode paging, menggunakan bagian data mana yang akan mentransfer bagian data tersebut ke dalam memori fisik);
Saat mendefinisikan suatu kelas, deskripsi kelas setelah kompilasi (informasi tentang anggota data mana, fungsi anggota mana, izin masing-masing, dll.) membentuk bagian dari file exe, yang dimuat ke dalam memori setelah dijalankan data biner diatur pada alamat memori adalah 0x0001;
Saat membuat instance objek kelas, hal ini bergantung pada bahasanya. Dalam C++, objek instantiasi kelas mengalokasikan memori pada tumpukan; dalam C#, objek instantiasi kelas mengalokasikan memori pada heap; ruang (seperti sistem Windows 32-bit, ruang memori program adalah 4G). Di sisa memori selain memori yang dipetakan oleh exe, ketika objek yang dipakai melebihi masa pakainya atau dilepaskan dari heap, ruang memori dikembalikan. ke proses.
Demikian pula, data biner berkode generik terkandung dalam file exe dan dimuat ke dalam memori.
Ketika suatu generik dipakai, yaitu ketika tipe tertentu dikompilasi (perhatikan bahwa proses pembuatan instance generik dalam C# dilakukan selama kompilasi, yaitu, generik yang dipakai yang digunakan dalam kode, Untuk setiap tipe tertentu, biner kode dihasilkan selama kompilasi, dan kode biner dari generik itu sendiri ditulis ke dalam file exe). Berapa banyak ruang yang perlu ditempati oleh kode biner dari setiap jenis yang dipakai dalam file exe?
Dalam C#, kita perlu membedakan antara tipe referensi dan tipe nilai. Misalkan sebuah generik membuat dua tipe referensi dan dua tipe nilai dalam kode sumber program.
Kemudian untuk tipe referensi:
Satu menggunakan pointer 4-byte, dan dua menggunakan dua pointer. Data biner menunjuk ke tipe yang digunakan (seperti myClass di vektor
Untuk tipe nilai:
Tipe nilai mencakup struktur dan tipe data yang telah ditentukan sebelumnya. Saat membuat instance generik dengan tipe tersebut (seperti vektor