Lebih
Pemetaan Aliran data struktur data di C#
Apakah ada cara pemetaan data yang dikumpulkan pada suatu aliran atau array struktur data atau sebaliknya? Dalam C++ ini hanya akan menjadi masalah casting pointer ke sungai sebagai tipe data yang ingin saya gunakan (atau sebaliknya untuk reverse) misalnya: dalam C++
Mystruct * pMyStrct = (Mystruct*)&SomeDataStream;
pMyStrct->Item1 = 25;
int iReadData = pMyStrct->Item2;
jelas C++ cara ini cukup aman kecuali anda yakin kualitas aliran data ketika membaca data yang masuk, tapi untuk keluar data super cepat dan mudah.
25
4
Kebanyakan orang menggunakan .NET serialisasi (ada yang lebih cepat biner dan lebih lambat XML formatter, mereka berdua tergantung pada refleksi dan versi toleran terhadap tingkat tertentu)
Namun, jika anda ingin tercepat (aman) cara - mengapa tidak:
Menulis:
Membaca:
Dalam kasus lubos hasko's jawaban yang tidak aman yang cukup, ada juga yang *benar-benar *** cara yang tidak aman, menggunakan pointer dalam C#. Berikut ini's beberapa tips dan perangkap saya've berjalan ke:
jika .net pada kedua sisi:
berpikir anda harus menggunakan biner serialisasi dan mengirim byte[] hasilnya.
percaya struct anda untuk sepenuhnya blittable dapat menjadi masalah.
anda akan membayar dalam beberapa overhead (baik cpu dan jaringan) tetapi akan aman.
Jika anda perlu untuk mengisi masing-masing variabel anggota dengan tangan anda dapat menggeneralisasi sedikit sejauh primitif yang bersangkutan dengan menggunakan FormatterServices untuk mengambil dalam rangka daftar jenis variabel yang berhubungan dengan suatu objek. I've harus melakukan ini dalam sebuah proyek di mana saya punya banyak berbagai jenis pesan yang datang dari sungai dan aku pasti tidak't ingin menulis serializer/deserializer untuk setiap pesan.
Berikut ini's kode yang saya digunakan untuk menggeneralisasi deserialization dari byte[].