IEnumerable<T>
হয় সহ-বৈকল্পিক কিন্তু এটা মান টাইপ, শুধু শুধুমাত্র রেফারেন্সের টাইপ সমর্থন করে না। নীচের সহজ কোডটি সফলভাবে সংকলিত হয়েছে:
IEnumerable<string> strList = new List<string>();
IEnumerable<object> objList = strList;
কিন্তু থেকে পরিবর্তন string
করতে int
কম্পাইল ভুল পান করবে:
IEnumerable<int> intList = new List<int>();
IEnumerable<object> objList = intList;
কারণটি এমএসডিএন-তে ব্যাখ্যা করা হয়েছে :
বৈকল্পিকতা কেবলমাত্র রেফারেন্স ধরণের ক্ষেত্রে প্রযোজ্য; যদি আপনি কোনও ভেরিয়েন্ট টাইপ প্যারামিটারের জন্য কোনও মান প্রকার নির্দিষ্ট করে থাকেন, তবে সেই ধরণের পরামিতি ফলাফল নির্মিত ধরণের জন্য অদক্ষ।
আমি অনুসন্ধান করে দেখেছি যে কয়েকটি প্রশ্নের কারণ হিসাবে উল্লেখ করা হয়েছে তা হ'ল মূল্য এবং রেফারেন্স ধরণের মধ্যে বক্সিং । তবে এটি এখনও আমার মন পরিষ্কার করে না যে বক্সিংয়ের কারণটি কেন?
কেউ দয়া করে একটি সহজ এবং বিস্তারিত ব্যাখ্যা দিতে পারেন কেন কেন সমানতা এবং বৈপরীত্য মূল্য প্রকারকে সমর্থন করে না এবং বক্সিং কীভাবে এটিকে প্রভাবিত করে?