গভীর অন্তর্দৃষ্টি প্রশংসা।
আমি আমার যথাসাধ্য চেষ্টা করব
অন্যান্য উত্তরে যেমন উল্লেখ করা হয়েছে, এখানে যা চলছে তা সংকলকটি সনাক্ত করছে যে একটি অভিব্যক্তি একটি বিবৃতি হিসাবে ব্যবহৃত হচ্ছে । অনেক ভাষায় - সি, জাভাস্ক্রিপ্ট এবং আরও অনেকগুলি - এ বিবৃতি হিসাবে কোনও অভিব্যক্তি ব্যবহার করা পুরোপুরি আইনী। 2 + 2;
এই ভাষাগুলিতে আইনী, যদিও এটি একটি বিবৃতি যা এর কোনও প্রভাব ফেলেনি। কিছু অভিব্যক্তি কেবল তাদের মূল্যবোধের জন্য দরকারী, কিছু অভিব্যক্তিগুলি কেবলমাত্র তাদের পার্শ্ব প্রতিক্রিয়াগুলির জন্য দরকারী (যেমন একটি শূন্য রিটার্নিং পদ্ধতির কল) এবং কিছু অভিব্যক্তি, দুর্ভাগ্যক্রমে, উভয়ের পক্ষে কার্যকর। (ইনক্রিমেন্টের মতো।)
পয়েন্ট হ'ল: কেবলমাত্র অভিব্যক্তি নিয়ে গঠিত বিবৃতিগুলি অবশ্যই ত্রুটিযুক্ত না হয় যদি না এই অভিব্যক্তিগুলি সাধারণত তাদের মানগুলির চেয়ে পার্শ্ব প্রতিক্রিয়াগুলির জন্য আরও কার্যকর হিসাবে বিবেচিত হয় । সি # ডিজাইনাররা সাধারণত তাদের পার্শ্বপ্রতিক্রিয়া হিসাবে বিবেচিত এমন অভিব্যক্তিগুলিকে মঞ্জুরি দিয়ে মধ্যবর্তী স্থল খুঁজে পেতে ইচ্ছুক ছিলেন, যখন সাধারণত তাদের মূল্যবোধের জন্য দরকারী হিসাবে বিবেচিত হয় তাদের এড়িয়ে যান। সি # 1.0 এ তারা প্রকাশের সেটটি হ'ল ইনক্রিমেন্ট, হ্রাস, পদ্ধতি কল, অ্যাসাইনমেন্ট এবং কিছুটা বিতর্কিতভাবে, নির্মাণকারীর অনুরোধ।
সংযুক্তি: একজন সাধারণভাবে কোনও অবজেক্ট কনস্ট্রাকশনকে এটির মান হিসাবে উত্পাদন হিসাবে বিবেচনা করে বলে মনে করেন, নির্মাণের পার্শ্ব প্রতিক্রিয়ার জন্য নয়; আমার মতে অনুমতি দেওয়া new Foo();
হ'ল কিছুটা ভুল ধারণা fe বিশেষত, আমি এই প্যাটার্নটি বাস্তব-বিশ্বের কোডে দেখেছি যা একটি সুরক্ষা ত্রুটির কারণ হয়েছিল:
catch(FooException ex) { new BarException(ex); }
কোডটি জটিল হলে এই ত্রুটিটি চিহ্নিত করা আশ্চর্যরকম কঠিন হতে পারে।
সংকলক অতএব সেই সমস্ত বিবৃতি সনাক্ত করতে কাজ করে যা সেই তালিকায় নেই এমন অভিব্যক্তিগুলি নিয়ে গঠিত। বিশেষত, প্রথম বন্ধনীযুক্ত এক্সপ্রেশনগুলি ঠিক সেইরূপেই চিহ্নিত করা হয় - প্রথম বন্ধনীযুক্ত এক্সপ্রেশন। তারা "বিবৃতি প্রকাশ হিসাবে অনুমোদিত" এর তালিকায় নেই, তাই তাদের অনুমতি দেওয়া হয়নি।
এই সমস্তগুলি সি # ভাষার একটি ডিজাইনের নীতিমালার পরিষেবাতে রয়েছে। আপনি যদি টাইপ করেন তবে (x++);
আপনি সম্ভবত কিছু ভুল করছেন । এটি সম্ভবত একটি টাইপো M(x++);
বা কিছু সাধারণ জিনিস। মনে রাখবেন, সি # সংকলক দলের মনোভাব " মনোভাবটি " এই কাজটি করার জন্য আমরা কী কোনও উপায় বের করতে পারি ? " সি # সংকলক দলের মনোভাবটি " যদি সম্ভাবনাময় কোডটি সম্ভবত কোনও ভুল বলে মনে হয় তবে আসুন আমরা বিকাশকারীকে অবহিত করি "। সি # বিকাশকারীদের এই মনোভাবের মতো।
এখন, সমস্ত যা বলেছে, সেখানে আসলে কয়েকটি অদ্ভুত ঘটনা রয়েছে যেখানে সি # নির্দিষ্টকরণ রয়েছে না পরোক্ষভাবে বা রাজ্য সরাসরি যে প্রথম বন্ধনী অননুমোদিত হয় কিন্তু C # এর কম্পাইলার তাদের কোন পথে পারেন। প্রায় সমস্ত ক্ষেত্রেই নির্দিষ্ট আচরণ এবং অনুমোদিত আচরণের মধ্যে সামান্য তাত্পর্য পুরোপুরি নিরীহ, সুতরাং সংকলক লেখকরা এই ছোট বাগগুলি কখনই স্থির করেননি। আপনি এখানে তাদের সম্পর্কে পড়তে পারেন:
রিটার্ন মাইওয়ার বনাম রিটার্ন (মাইভার) এর মধ্যে কি পার্থক্য রয়েছে?