সি # স্পেসিফিকেশন বিভাগের ব্যাখ্যা প্রয়োজন


11

আমি সি # স্পেসিফিকেশন পড়ছি । আমি একটি বিভাগে স্পষ্টতা ব্যবহার করতে পারে:

সি # এর একটি ইউনিফাইড টাইপ সিস্টেম রয়েছে। সমস্ত সি # প্রকারগুলি, যেমন আন্ত এবং ডাবলের মতো আদিম প্রকারগুলি সহ একটি একক মূল অবজেক্ট টাইপ থেকে উত্তরাধিকার সূত্রে প্রাপ্ত। সুতরাং, সমস্ত ধরণের প্রচলিত ক্রিয়াকলাপগুলির একটি সেট ভাগ হয় এবং যে কোনও ধরণের মান একটি সামঞ্জস্যপূর্ণ পদ্ধতিতে সঞ্চয়, পরিবহন এবং পরিচালিত হতে পারে। তদ্ব্যতীত, সি # ব্যবহারকারী-সংজ্ঞায়িত রেফারেন্স ধরণ এবং মান প্রকার উভয়কেই সমর্থন করে, লাইটওয়েট স্ট্রাকচারের ইন-লাইন স্টোরেজকে অবজেক্টগুলির গতিশীল বরাদ্দ দেয়।

এই প্রসঙ্গে "লাইটওয়েট স্ট্রাকচারগুলির ইন-লাইন স্টোরেজ" এর অর্থ কী?

উত্তর:


11

এসভিকের উত্তরটি ভাল তবে আমি ভেবেছিলাম কিছু অতিরিক্ত পয়েন্ট যুক্ত করব।

প্রথমে, অনুচ্ছেদটি ত্রুটিযুক্ত। পয়েন্টার প্রকারগুলি বস্তু থেকে উত্তরাধিকার সূত্রে আসে না। ইন্টারফেস টাইপ বা টাইপ পরামিতি টাইপ হিসাবে পরিচিত সংকলনের মানগুলি রানটাইমের সময় হয় অবৈধ রেফারেন্স বা বস্তুর কাছ থেকে উত্তরাধিকারসূত্রে প্রাপ্ত কোনও কিছুর উত্সাহজনক উদাহরণ হতে পারে তবে এই ধরণের প্রকারভেদগুলি বলার ক্ষেত্রে এটি সর্বদা আমাকে বিজোড় হিসাবে গঠন করে " অবজেক্ট "বস্তু থেকে; উত্তরাধিকার হ'ল সম্পত্তি যা পূর্বপুরুষের সদস্যরা বংশধর সদস্য, তবে আপনি সাধারণত "টসস্ট্রিং" আইইনুমেবলের সদস্য হিসাবে ভাবেন না। আপনি এটিকে আইওনামেবলকে কার্যকর করে এমন জিনিসটির সদস্য হিসাবে ভাবেন

অনুচ্ছেদটিও ত্রুটিযুক্ত কারণ এটি স্পেসে কেবলমাত্র "আদিম ধরণের" উপস্থিত, এবং এটি সংজ্ঞা ছাড়াই উপস্থিত হয়। সুতরাং এটি উভয় অপ্রয়োজনীয় এবং বিভ্রান্তিকর এবং অপসারণ করা উচিত।

আমি চেয়েছিলাম এই অনুচ্ছেদটি কিছু সময়ের জন্য স্থির করা হোক। পরের বার ম্যাডসকে দেখলে আমি তাকে স্মরণ করিয়ে দেব।

আপনার সুনির্দিষ্ট প্রশ্নের সমাধানের জন্য: এসভিক অবশ্যই সঠিক তবে এটি একটি নির্দিষ্ট উদাহরণ দেখতে সহায়ক। যখন আপনি বলে:

struct ColorfulInt
{
    int value;
    Color color;
    ...
}

এবং আপনি তৈরি করুন, বলুন, একটি অ্যারে:

ColorfulInt[] x = new ColorFulInt[100];

তারপরে সেই 100 ইন্টস এবং 100 টি রঙের স্টোরেজ অ্যারেতে চলে যায় । এর পরিবর্তে যদি কালারফুলইন্ট একটি শ্রেণি হত তবে অ্যারেতে রঙিনফ্যান্টের জন্য 100 টি উল্লেখ রয়েছে, যার প্রত্যেকটির স্বতন্ত্রভাবে বরাদ্দ করতে হবে। স্বতন্ত্রভাবে স্টোরেজ বরাদ্দ করার চেয়ে স্বতন্ত্রভাবে এই শতাধিক উপাদানকে বরাদ্দ করা সময় এবং স্থান উভয় ক্ষেত্রেই খুব কম দক্ষ।


সুতরাং, সেই সমস্ত অবজেক্টগুলির মেমোরি বিমূর্তকরণের গুরুত্ব কী, আপনি যখন তাদের হেরফের করতে প্রস্তুত হন তখন তারা অ্যাক্সেস করা সহজতর হয় যদি তারা ঠিকানার মতো স্থানের আয়াতগুলির একটি সংলগ্ন ব্লকে থাকে তবে কে কোথায় জানে? এটা কি সঠিক, নাকি আমি এখনও কিছু মিস করছি?
চকটি

@ চক্ট: সঠিক আপনি ইন্ডিয়ারেশনের ওভারহেড প্রদান করবেন না, এবং আপনি সুন্দর ক্যাশে লোকাল পাবেন।
এরিক লিপার্ট

12

এর অর্থ হ'ল মানের ধরণগুলি যেখানে আপনি সেগুলি সংজ্ঞায়িত করেন সেখানে সরাসরি সংরক্ষণ করা হয়, যা রেফারেন্সের ধরণের সাথে তুলনা করার সময় তাদের আরও কার্যকর করে তোলে।

প্রকৃত পক্ষে এর মানে কি? যদি আপনার কোনও মান ধরণের স্থানীয় ভেরিয়েবল থাকে তবে এটি সাধারণত সরাসরি স্ট্যাকের মধ্যে সংরক্ষণ করা হবে (তবে অনেকগুলি ব্যতিক্রম রয়েছে)। আপনার যদি কোনও মান ধরণের ক্ষেত্র থাকে তবে এটি সরাসরি বদ্ধ শ্রেণী বা কাঠামোতে সংরক্ষণ করা হবে।


1
এটা বোধগম্য. আমার জন্য যে মাংসপেশী জন্য ধন্যবাদ, svick!
ChuckT
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.