সি # তে, আমি কোনও ইন্টারফেসের ব্যাক আপ না করে এই সমস্ত যাদু পদ্ধতিগুলি পপ আপ করতে দেখছি। কেন এটি বেছে নেওয়া হয়েছিল?
আমাকে ব্যাখ্যা করতে দাও.
পূর্বে সি # তে, যদি কোনও বস্তু IEnumerableইন্টারফেসটি প্রয়োগ করে তবে এটি একটি foreachলুপ দ্বারা স্বয়ংক্রিয়ভাবে পুনরাবৃত্ত হবে । এটি আমার কাছে উপলব্ধি করে, যেহেতু এটি একটি ইন্টারফেস দ্বারা ব্যাক আপ করা হয়েছে, এবং আমি যদি Iteratorক্লাসের ভিতরে আমার নিজস্ব ফাংশনটি পুনরাবৃত্তি হচ্ছিলাম, তবে আমি উদ্বেগ ছাড়াই এটি করতে পারি যে এটি যাদুবিদ্যার অর্থ অন্য কিছু হতে পারে।
এখন, স্পষ্টতই, (কখন তা নিশ্চিত নয়), এই ইন্টারফেসগুলির আর প্রয়োজন নেই। এটির জন্য ঠিক নামকরণের রূপান্তর থাকা দরকার।
আরেকটি উদাহরণ একটি পদ্ধতি নামে না থাকার কোন বস্তুর awaitable করছে ঠিক GetAwaiter যা কয়েক নির্দিষ্ট বৈশিষ্ট্য আছে।
কেন একটি ইন্টারফেস না তারা করেছিল IEnumerableবা INotifyPropertyChangedস্ট্যাটিক্যালি এই "ম্যাজিক" ব্যাকআপ নিতে পারেন?
আমি এখানে কী বলতে চাইছি তার উপর আরও বিশদ:
http://blog.nem.ec/2014/01/01/magic-methods-c-sharp/
যাদু পদ্ধতির সুবিধাগুলি এবং কনস কী, এবং অনলাইনে কোথাও কোথাও এমন কোনও সিদ্ধান্ত রয়েছে যেখানে এই সিদ্ধান্ত কেন নেওয়া হয়েছে সে সম্পর্কে আমি কিছু খুঁজে পেতে পারি?
async/ await, তবে এটি কেবল কোডের সাথে কাজ করবে যা .NET 4.5 পরে কার্যকর ছিল একটি লক্ষ্যমাত্রার হয়ে ওঠার জন্য যথেষ্ট প্রসারিত হয়ে উঠেছে… যা মূলত এখন। তবে পদ্ধতি কলগুলিতে বিশুদ্ধভাবে সিনট্যাক্টিক অনুবাদ আমাকে সত্যতার awaitপরে বিদ্যমান ধরণের ক্ষেত্রে কার্যকারিতা যুক্ত করতে দেয় ।
foreachপ্রথমদিকে লুপের ব্যাক কার্যকারিতা হিসাবে প্রয়োগ করা হয়েছিল । সেখানে কখনো বস্তু বাস্তবায়নে ক্ষেত্রে আবশ্যক হয়েছে IEnumerableজন্য foreachকাজ করতে। এটি সবেমাত্র এটি করার কনভেনশন হয়েছে।