উপমা অনুসারে, সি # হ'ল মেকানিকের সরঞ্জামগুলির একটি সেটের মতো যেখানে কেউ পড়েছেন যে আপনার সাধারণত প্লেয়ার এবং সামঞ্জস্যযোগ্য রঞ্চগুলি এড়ানো উচিত, সুতরাং এতে সামঞ্জস্যযোগ্য রঞ্চগুলি মোটেই অন্তর্ভুক্ত হয় না, এবং প্লেয়ারগুলি "অনিরাপদ" চিহ্নিত একটি বিশেষ ড্রয়ারে লক করা থাকে where , এবং কেবলমাত্র একজন সুপারভাইজারের অনুমোদনের সাথে ব্যবহার করা যেতে পারে, আপনার অস্বীকারকারীকে আপনার স্বাস্থ্যের জন্য কোনও দায়বদ্ধতা থেকে মুছে ফেলার ক্ষেত্রে এই দাবি অস্বীকার করার পরে signing
সি ++, তুলনা করে কেবল সামঞ্জস্যযোগ্য রেনচ এবং প্লেয়ারগুলিই অন্তর্ভুক্ত করে না তবে কিছু কিছু অদ্ভুত বলের বিশেষ উদ্দেশ্যে সরঞ্জামগুলি যার উদ্দেশ্য তাত্ক্ষণিকভাবে আপাত হয় না এবং যদি আপনি এগুলি ধরে রাখার সঠিক উপায়টি না জানেন তবে তারা সহজেই আপনার কাটতি কাটবে থাম্ব (তবে একবার আপনি কীভাবে সেগুলি ব্যবহার করবেন তা বুঝতে পারলে, সি # টুলবক্সের বেসিক সরঞ্জামগুলির সাহায্যে অসম্ভব অসম্ভব জিনিসগুলি করতে পারেন)। তদতিরিক্ত, এটিতে একটি লেদ, মিলিং মেশিন, উপরিভাগের পেষকদন্ত, ধাতব-কাটিং ব্যান্ড-করাত ইত্যাদি রয়েছে যাতে যে কোনও সময় আপনি যখন প্রয়োজন বোধ করেন তখন পুরোপুরি নতুন সরঞ্জামগুলি ডিজাইন করতে এবং তৈরি করতে দেয় (তবে হ্যাঁ, এই মেশিনালিস্টের সরঞ্জামগুলি পারে এবং কারণ হতে পারে গুরুতর জখমগুলি যদি আপনি না জানেন যে আপনি তাদের সাথে কী করছেন - বা এমনকি যদি আপনি কেবল অযত্ন পান)।
এটি দর্শনের মৌলিক পার্থক্য প্রতিফলিত করে: সি ++ আপনাকে প্রয়োজনীয় সমস্ত ডিজাইনের প্রয়োজন হতে পারে যা আপনার প্রয়োজন হতে পারে give এটি কীভাবে আপনি এই সরঞ্জামগুলি ব্যবহার করেন তা নিয়ন্ত্রণে প্রায় কোনও প্রয়াসই তৈরি করে না, তাই বিরল পরিস্থিতিতে কেবলমাত্র কার্যকরভাবে নকশাকৃত নকশাগুলি তৈরি করার জন্য এগুলি ব্যবহার করা সহজ, পাশাপাশি এমন নকশাগুলিও সম্ভবত সম্ভবত একটি দুষ্টু ধারণা এবং এমন পরিস্থিতিতে কেউ জানেন না যে তারা সম্ভবত ভাল কাজ করার সম্ভাবনা আছে। বিশেষত, নকশার সিদ্ধান্তগুলি ডিউপলিংয়ের মাধ্যমে এগুলির একটি বিরাট কাজ করা হয় - এমনকি বাস্তবে এটি প্রায় সবসময় মিলিত হয়। ফলস্বরূপ, কেবল সি ++ লেখার এবং সি ++ ভাল লেখার মধ্যে বিশাল পার্থক্য রয়েছে। সি ++ ভাল লিখতে গেলে আপনাকে প্রচুর রীতিমতো আইডিয়াম এবং নিয়ম জানতে হবে (থাম্বের অন্যান্য নিয়ম ভঙ্গ করার আগে পুনরায় বিবেচনা করার জন্য কতটা গুরুত্ব সহকারে থাম্বের বিধি রয়েছে)। ফলস্বরূপ, সি ++ শেখার সহজতার চেয়ে ব্যবহারের স্বাচ্ছন্দ্যের (বিশেষজ্ঞদের দ্বারা) আরও অনেক বেশি মনোযোগী। এমন অনেকগুলি (অনেকগুলি) পরিস্থিতি রয়েছে যেখানে এটি ব্যবহার করা সত্যই মারাত্মক সহজ নয়।
ভাষা ডিজাইনাররা ভাল ডিজাইনের অনুশীলনগুলি কী বিবেচনা করে তা জোর করার চেষ্টা করার জন্য সি # আরও অনেক কিছু করেছে (বা কমপক্ষে অত্যন্ত দৃ strongly়তার সাথে পরামর্শ দেয়)। বেশ কয়েকটি বিষয় যা সি ++ এ ডুপ্লুপ হয় (তবে সাধারণত অনুশীলনে একসাথে যায়) সরাসরি সি # তে মিলিত হয়। এটি "অনিরাপদ" কোডটিকে সীমানাটিকে কিছুটা ধাক্কা দেওয়ার অনুমতি দেয়, তবে সত্যই, পুরোটা নয়।
ফলাফলটি হ'ল একদিকে বেশ কয়েকটি ডিজাইন রয়েছে যা সি ++ এ সরাসরি প্রকাশ করা যায় যা সি # তে প্রকাশ করার জন্য যথেষ্ট পরিমাণে ক্ল্যামিয়ার হয়। অন্যদিকে, এটি একটি এর পুরো সি # শিখতে অনেক সহজ, এবং একটি সত্যিই ভয়ঙ্কর নকশা আপনার পরিস্থিতির জন্য কাজ না (অথবা সম্ভবত অন্য কোন হয় না) হবে উত্পাদক সম্ভাবনা আয়তন বহুলাংশে হ্রাস পেয়েছে। অনেকগুলি (সম্ভবত বেশিরভাগ ক্ষেত্রে) ক্ষেত্রে, আপনি কেবল "প্রবাহের সাথে চলে" গিয়ে শক্ত, কার্যক্ষম নকশা পেতে পারেন, তাই বলে। অথবা, আমার একজন বন্ধু হিসাবে (কমপক্ষে আমি তাকে বন্ধু হিসাবে ভাবতে চাই - তিনি সত্যই রাজি কিনা তা নিশ্চিত নন) এটি লিখতে পছন্দ করেন, সি # সাফল্যের গর্তে পড়তে সহজ করে তোলে।
সুতরাং দুটি ভাষাতে কীভাবে class
এবং কীভাবে এই প্রশ্নটি রয়েছে সে সম্পর্কে আরও সুনির্দিষ্টভাবে তাকান struct
: একটি উত্তরাধিকার শ্রেণিবিন্যাসে তৈরি বস্তুগুলি যেখানে আপনি তার ভিত্তি শ্রেণি / ইন্টারফেসের ছদ্মবেশে কোনও উত্পন্ন শ্রেণীর কোনও অবজেক্ট ব্যবহার করতে পারেন, আপনি খুব সুন্দর একটি সাধারণ পয়েন্টার বা রেফারেন্সের মাধ্যমে আপনার সাধারণত এটি করা দরকার - এটিকে আটকে রেখে একটি দৃ a় স্তরে, উত্পন্ন শ্রেণীর অবজেক্টে এমন কিছু মেমরি থাকে যা বেস শ্রেণীর উদাহরণ হিসাবে বিবেচনা করা যেতে পারে / ইন্টারফেস এবং উত্পন্ন বস্তুটি মেমরির সেই অংশের ঠিকানার মাধ্যমে চালিত হয় ulated
সি ++ তে, প্রোগ্রামারটি এটি সঠিকভাবে করাতে পারে - যখন তিনি উত্তরাধিকার ব্যবহার করছেন, তখন এটি নিশ্চিত করা তাঁর (যেমন উদাহরণস্বরূপ) বংশগতিতে পলিমারফিক ক্লাসগুলির সাথে কাজ করে এমন একটি ফাংশন এটি পয়েন্টার বা বেসের রেফারেন্সের মাধ্যমে করে বর্গ।
সি # তে, মূলত ধরণেরগুলির মধ্যে একই বিভাজনটি অনেক বেশি স্পষ্ট এবং ভাষা থেকেই প্রয়োগ করা হয়। প্রোগ্রামারটিকে রেফারেন্স দ্বারা কোনও শ্রেণীর উদাহরণ পাস করার জন্য কোনও পদক্ষেপ গ্রহণ করার দরকার নেই, কারণ এটি ডিফল্টরূপে ঘটবে।
struct
গুলি সবসময় স্ট্যাকের মধ্যে সংরক্ষণ করা হয় না; একটিstruct
ক্ষেত্র সহ একটি বিষয় বিবেচনা করুন । ম্যাসন হুইলারের কথা যেমন উল্লেখ করা হয়েছে, স্লাইসিংয়ের সমস্যাটি সম্ভবত সবচেয়ে বড় কারণ।