স্ট্রাইক / মানগুলির অ্যারেগুলির জন্য, এর সাথে আমার বিভিন্ন ফলাফল রয়েছে:
first = Marshal.UnsafeAddrOfPinnedArrayElement(array, 0).ToInt64();
second = Marshal.UnsafeAddrOfPinnedArrayElement(array, 1).ToInt64();
arrayElementSize = second - first;
(বড় আকারের উদাহরণ)
যেভাবেই পন্থা হউক না কেন, আপনাকে সত্যই বুঝতে হবে যে কীভাবে নেট ফলাফল ফলাফলকে সঠিকভাবে ব্যাখ্যা করতে কাজ করে। উদাহরণস্বরূপ, ফিরে আসা উপাদান আকারটি কিছু প্যাডিং সহ "সংযুক্ত" উপাদান আকার। ওভারহেড এবং এইভাবে আকারটি বিভিন্ন ধরণের ব্যবহারের উপর নির্ভর করে: জিসি হিপের উপর, স্ট্যাকের উপর, ক্ষেত্র হিসাবে, অ্যারের উপাদান হিসাবে "বক্সযুক্ত"।
(আমি জানতে চেয়েছিলাম যে জেনেরিকদের "alচ্ছিক" যুক্তি নকল করতে "ডামি" খালি স্ট্রাক্ট (কোনও ক্ষেত্র ছাড়াই) ব্যবহার করার স্মৃতি প্রভাব কী হবে; খালি স্ট্রাক্টের সাথে জড়িত বিভিন্ন বিন্যাসের সাথে পরীক্ষা করা, আমি দেখতে পাচ্ছি যে একটি ফাঁকা কাঠামো ব্যবহার করে ( কমপক্ষে) প্রতি উপাদান 1 বাইট; আমি অস্পষ্টভাবে এটি মনে রাখতে পারি কারণ। প্রতিটি ক্ষেত্রের জন্য নেটের আলাদা ঠিকানা প্রয়োজন, যা ক্ষেত্রটি সত্যিই ফাঁকা / 0-আকারের হলে কাজ করবে না)।