Peruntukan Tatasusunan dan Jenis Nilai pada Tindanan lwn. Timbunan
Dalam coretan kod anda:
int[] myIntegers; myIntegers = new int[100];
apabila anda buat tatasusunan myIntegers menggunakan kata kunci baharu, tatasusunan itu sendiri diperuntukkan pada timbunan, seperti yang dicadangkan oleh CLR. Walau bagaimanapun, elemen integer dalam tatasusunan, sebagai jenis nilai, tidak berkotak.
Pembolehubah Tindanan dan Setempat
Semua pembolehubah tempatan dalam fungsi, termasuk jenis nilai dan jenis rujukan, diperuntukkan pada timbunan. Perbezaan antara kedua-duanya terletak pada apa yang disimpan dalam pembolehubah ini.
Contoh untuk RefTypes dan ValTypes
Pertimbangkan jenis berikut:
class RefType { public int I; public string S; public long L; } struct ValType { public int I; public string S; public long L; }
Nilai setiap jenis memerlukan 16 bait memori: 4 bait untuk I, 4 bait untuk rujukan S (atau yang sebenar Rentetan S untuk ValType), dan 8 bait untuk L.
Jika anda mempunyai pembolehubah tempatan jenis RefType, ValType, dan int[], ia akan diperuntukkan pada tindanan seperti berikut:
Stack: 0-3 bytes: RefType variable 4-7 bytes: ValType variable 8-11 bytes: int[] variable
Reka Letak Memori
Apabila memberikan nilai kepada pembolehubah ini:
refType = new RefType(); refType.I = 100; refType.S = "refType.S"; refType.L = 0x0123456789ABCDEF; valType = new ValType(); valType.I = 200; valType.S = "valType.S"; valType.L = 0x0011223344556677; intArray = new int[4]; intArray[0] = 300; intArray[1] = 301; intArray[2] = 302; intArray[3] = 303;
nilai akan diedarkan dalam perkara berikut cara:
Stack: 0-3 bytes: Heap address of `refType` 4-7 bytes: Value of `valType.I` 8-11 bytes: Heap address of `valType.S` 12-15 bytes: Low 32-bits of `valType.L` 16-19 bytes: High 32-bits of `valType.L` 20-23 bytes: Heap address of `intArray`
Timbunan:
Di alamat timbunan refType:
Di timbunan intArray alamat:
**Passing Arrays**
Atas ialah kandungan terperinci Bagaimanakah tatasusunan dan jenis nilai diperuntukkan pada timbunan dan timbunan dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!