Jika suatu entitas akan berubah, pertanyaan apakah akan menggunakan struct atau kelas umumnya akan menjadi salah satu kinerja daripada semantik. Pada sistem 32/64-bit, referensi kelas membutuhkan 4/8 byte untuk disimpan, terlepas dari jumlah informasi di kelas; menyalin referensi kelas akan membutuhkan menyalin 4/8 byte. Di sisi lain, setiap berbedainstance kelas akan memiliki 8/16 byte overhead di samping informasi yang dimilikinya dan biaya memori referensi untuk itu. Misalkan seseorang menginginkan array 500 entitas, masing-masing memegang empat bilangan bulat 32-bit. Jika entitas adalah tipe struktur, array akan membutuhkan 8.000 byte terlepas dari apakah semua 500 entitas semuanya identik, semua berbeda, atau di antara keduanya. Jika entitas adalah tipe kelas, array 500 referensi akan mengambil 4.000 byte. Jika referensi semua menunjuk ke objek yang berbeda, objek akan memerlukan tambahan 24 byte masing-masing (12.000 byte untuk semua 500), total 16.000 byte - dua kali biaya penyimpanan dari jenis struct. Di sisi lain, dari kode yang dibuat satu objek instance dan kemudian disalin referensi ke semua 500 array slot, total biaya akan menjadi 24 byte untuk instance itu dan 4, 000 untuk array - total 4.024 byte. Penghematan besar. Beberapa situasi akan berhasil serta yang terakhir, tetapi dalam beberapa kasus mungkin untuk menyalin beberapa referensi ke slot array yang cukup untuk membuat berbagi seperti itu bermanfaat.
Jika entitas seharusnya bisa berubah, pertanyaan apakah menggunakan kelas atau struct dalam beberapa hal lebih mudah. Asumsikan "Benda" adalah suatu struct atau kelas yang memiliki bidang bilangan bulat yang disebut x, dan seseorang melakukan kode berikut:
Hal t1, t2;
...
t2 = t1;
t2.x = 5;
Apakah orang ingin pernyataan yang terakhir mempengaruhi t1.x?
Jika Benda adalah tipe kelas, t1 dan t2 akan sama, artinya t1.x dan t2.x juga akan setara. Dengan demikian, pernyataan kedua akan mempengaruhi t1.x. Jika Benda adalah tipe struktur, t1 dan t2 akan menjadi instance yang berbeda, artinya t1.x dan t2.x akan merujuk ke bilangan bulat yang berbeda. Dengan demikian, pernyataan kedua tidak akan mempengaruhi t1.x.
Struktur yang dapat berubah dan kelas yang dapat berubah memiliki perilaku yang berbeda secara mendasar, meskipun .net memiliki beberapa kebiasaan dalam penanganan mutasi struktural. Jika seseorang menginginkan perilaku tipe-nilai (artinya "t2 = t1" akan menyalin data dari t1 ke t2 sambil meninggalkan t1 dan t2 sebagai contoh berbeda), dan jika seseorang dapat hidup dengan quirks dalam penanganan jenis nilai .net menggunakan, sebuah struktur. Jika seseorang menginginkan semantik tipe nilai tetapi quirks .net akan menyebabkan rusaknya semantik tipe nilai dalam aplikasi seseorang, gunakan kelas dan bergumam.