সি # তে বক্সিং এবং আনবক্সিংয়ের মধ্যে পার্থক্য
কন্টেন্ট
সি # তে, সমস্ত মান ধরণের শ্রেণীর অবজেক্ট থেকে প্রাপ্ত। সুতরাং, টাইপ অবজেক্টের একটি রেফারেন্স ভেরিয়েবল অন্য কোনও মান প্রকারকে উল্লেখ করতে পারে। সি # বক্সিং এবং আনবক্সিংয়ে দুটি পদ্ধতি প্রবর্তন করে, যা মান প্রকারকে রেফারেন্স টাইপের সাথে সংযুক্ত করে। বক্সিং এবং আনবক্সিংয়ের মধ্যে মূল পার্থক্যটি হ'ল বক্সিং হ'ল একটি ধরণের মান ধরণের রূপান্তর হয় অন্যদিকে, আনবক্সিং শব্দটি বস্তুর প্রকারকে মান ধরণের রূপান্তরকে বোঝায়। আসুন বক্সিং এবং আনবক্সিংয়ের মধ্যে অন্যান্য পার্থক্যগুলি অধ্যয়ন করি।
- তুলনা রেখাচিত্র
- সংজ্ঞা
- মূল পার্থক্য
- উপসংহার
তুলনা রেখাচিত্র
তুলনা করার জন্য বেস | বক্সিং | আনবক্সিং |
---|---|---|
মৌলিক | অবজেক্ট টাইপ মানে মান টাইপ। | বক্সযুক্ত বস্তু থেকে মান পুনরুদ্ধারের প্রক্রিয়া। |
সংগ্রহস্থল | স্ট্যাকের মধ্যে সঞ্চিত মান হিপ মেমরিতে সঞ্চিত অবজেক্টে অনুলিপি করা হয়। | হিপ মেমরিতে সঞ্চিত বস্তুর মান স্ট্যাকের মধ্যে সঞ্চিত মানের ধরণে অনুলিপি করা হয়। |
রূপান্তর | অন্তর্নিহিত রূপান্তর। | সুস্পষ্ট রূপান্তর। |
উদাহরণ | int n = 24; অবজেক্ট ob = n; | int m = (int) ob; |
বক্সিং সংজ্ঞা
বক্সিং হ'ল একটি মূল্য ধরণের একটি বস্তুর ধরণের রূপান্তর করার একটি পদ্ধতি is এখানে, মানের ধরণ স্ট্যাকের মধ্যে সংরক্ষণ করা হয় এবং অবজেক্টের ধরণ হিপ মেমরিতে সঞ্চয় করা হয়। বস্তুর ধরণে মান ধরণের এই রূপান্তরটি অন্তর্নিহিত রূপান্তর। আপনি সরাসরি কোনও বস্তুকে একটি মান নির্ধারণ করতে পারেন এবং সি # বাকী রূপান্তরটি পরিচালনা করবে handle আসুন একটি উদাহরণ সহ বক্সিং বুঝতে পারি।
int i = 24; অবজেক্ট ob = i; // অবজেক্ট টাইপ ওবিতে পূর্ণসংখ্যা টাইপ এন বক্স করুন। বা অবজেক্ট ob1 = 21; // এখানেও একটি অবজেক্ট টাইপ ob1 একটি পূর্ণসংখ্যার প্রকারকে বোঝায়
উপরের কোডে, পূর্ণসংখ্যার ধরণ i সমেত মান 24 স্ট্যাকের মধ্যে সংরক্ষণ করা হয় এবং অবজেক্ট টাইপ ওবিতে অনুলিপি করা হয়। একটি অবজেক্ট টাইপ এখন একটি পূর্ণসংখ্যা মান উল্লেখ করা হয়। এখন, "ইনট আই" -এর মানও 24 এবং "অবজেক্ট টাইপ ওব" -এর মানও 24 থাকে তবে উভয় মান একে অপরের থেকে পৃথক হয় যদি আপনি i এর মান পরিবর্তন করেন তবে এটির পরিবর্তনের প্রতিফলন ঘটবে না ob এর মান
বক্সিং অতিরিক্ত সময়ের সাথে অতিরিক্ত স্মৃতি গ্রাস করে। কারণটি হ'ল একটি নতুন অবজেক্ট, যা মান ধরণের উল্লেখ করবে, অবশ্যই তাকে গাদাতে মেমরির স্থান বরাদ্দ করতে হবে। এরপরে, স্ট্যাকের মধ্যে সঞ্চিত মানের ধরণের মান হিপ মেমরির অবস্থানটিতে অবজেক্টের ধরণীতে স্থানান্তরিত হবে।
আনবক্সিং সংজ্ঞা
বক্সিংয়ের বিপরীতটি আনবক্সিং। আনবক্সিং হ'ল বস্তুর ধরণের মান ধরণের রূপান্তর। আনবক্সিংয়ে স্তূপে সঞ্চিত বক্সযুক্ত অবজেক্ট প্রকারের মান স্ট্যাকের মধ্যে সঞ্চিত মানের ধরণে স্থানান্তরিত হয়। বক্সিং থেকে ভিন্ন, আনবক্সিং স্পষ্টভাবে সম্পন্ন করতে হবে। অবজেক্টের ধরণটি স্পষ্টভাবে মান ধরণের ক্ষেত্রে castালাই করা হয় এবং মানের ধরণটি অবজেক্টের ধরণের মান হিসাবে উল্লেখ করা উচিত। আসুন একটি উদাহরণ সহ আনবক্সিংয়ের ধারণাটি বুঝতে পারি।
int i = 24; অবজেক্ট ob = i; // অবজেক্ট টাইপ ওবিতে পূর্ণসংখ্যা টাইপ এন বক্স করুন। int j = (int) ob; // অবজেক্ট প্রকারের মধ্যে পূর্ণসংখ্যা টাইপ y তে পূর্ণসংখ্যার মানটি আনবক্স করুন।
অবজেক্ট ওব-তে সংরক্ষিত মানটি সেই ধরণের যেমন inte
আনবক্সিং আরও মেমরি এবং আরও বেশি সময় ব্যয় করে। যেহেতু, যখন কোনও অবজেক্টের ধরণটি আনবক্স করতে হয় তখন হিপে সংরক্ষণ করা অবজেক্ট টাইপের মান স্ট্যাকের মধ্যে থাকা নতুন মান প্রকারে স্থানান্তর করতে হয়। যার মূল্য পুনরুদ্ধার করা হয়েছে সেই বস্তুর ধরণটি এখন আবর্জনা সংগ্রহের জন্য উপলব্ধ।
- বক্সিংয়ে, কোনও বস্তুকে মান ধরণের হিসাবে উল্লেখ করা হয়। অন্যদিকে, বাক্সযুক্ত বস্তু থেকে মানটি পুনরুদ্ধারের প্রক্রিয়াটিকে আনবক্সিং বলে।
- স্ট্যাকের মধ্যে সঞ্চিত একটি মান ধরণ হিপ মেমরিতে সঞ্চিত অবজেক্টে অনুলিপি করা হয়। অন্যদিকে, আনবক্সিংয়ে, হিপ মেমরিতে সঞ্চিত কোনও বস্তু স্ট্যাক মেমরিতে সঞ্চিত একটি মান ধরণে অনুলিপি করা হয়।
- বক্সিং হ'ল একটি অন্তর্নিহিত রূপান্তর, যদিও আনবক্সিং একটি সুস্পষ্ট রূপান্তর।
উপসংহার:
বক্সিং এবং আনবক্সিং উভয়ই বেশি সময় এবং স্মৃতি ব্যয় করে এবং এগুলি গণনা ব্যয়বহুল। এগুলির ধরন সুরক্ষারও অভাব এবং রানটাইম ওভারহেড বৃদ্ধি করে increases প্রোগ্রামে বক্সিং এবং আনবক্সিংয়ের অত্যধিক ব্যবহার এড়াতে সর্বদা পরামর্শ দেওয়া হয়।