যে সমস্যাটি এখানে পর্যবেক্ষণ করা হয়েছে তা একটি আরও সাধারণ সমস্যার একটি বিশেষ ক্ষেত্রে, যা হ'ল সাম্যতার বিভিন্ন সংজ্ঞা যা কমপক্ষে কিছু পরিস্থিতিতে কার্যকর হতে পারে তা প্রকাশ করার জন্য সাধারণভাবে উপলব্ধ উপায়ে সংখ্যা ছাড়িয়ে যায়। এই সমস্যাটি কিছু ক্ষেত্রে দুর্ভাগ্যজনক বিশ্বাসের দ্বারা আরও খারাপ হয়েছে যে সমতার পরীক্ষার বিভিন্ন উপায়ে বিভ্রান্তিমূলক বিভিন্ন ফলাফল পাওয়া যায় এবং যখনই সম্ভব হয় তখন বিভিন্ন ধরণের সাম্যের একই ফল পাওয়া যায় বলে এ জাতীয় বিভ্রান্তি এড়ানো যেতে পারে।
বাস্তবে, বিভ্রান্তির মৌলিক কারণটি একটি বিভ্রান্ত বিশ্বাস যা বিভিন্ন ভিন্ন ভিন্ন শব্দার্থবিজ্ঞান বিভিন্ন পরিস্থিতিতে কার্যকর রয়েছে তা সত্ত্বেও সমতা এবং বৈষম্য পরীক্ষার বিভিন্ন ধরণের একই ফলাফল পাওয়া উচিত বলে আশা করা উচিত। উদাহরণস্বরূপ, একটি গাণিতিক দৃষ্টিকোণ থেকে, এটি অনুসরণ করতে সক্ষম হবে Decimal
যা কেবল অনুসরণযোগ্য শূন্যের সংখ্যার সাথে সমান হিসাবে তুলনা করে। double
ধনাত্মক শূন্য এবং negativeণাত্মক শূন্যের মতো মানগুলির জন্য একইভাবে । অন্যদিকে, ক্যাচিং বা ইন্টার্নিং দৃষ্টিভঙ্গি থেকে, এই জাতীয় শব্দার্থবিজ্ঞান মারাত্মক হতে পারে। ধরুন, উদাহরণস্বরূপ, এক একটি ছিল Dictionary<Decimal, String>
যেমন যে myDict[someDecimal]
সমান উচিত someDecimal.ToString()
। এইরকম একটি বিষয় যুক্তিসঙ্গত বলে মনে হয় যদি কারও অনেকগুলি থাকেDecimal
মানগুলি যেটি স্ট্রিংয়ে রূপান্তর করতে চেয়েছিল এবং অনেকগুলি সদৃশ হওয়ার আশা করেছিল। দুর্ভাগ্যক্রমে, যদি 12.3 মিটার এবং 12.40 মিটার রূপান্তর করতে এই জাতীয় ক্যাচিং ব্যবহার করা হয়, তবে 12.30 মিটার এবং 12.4 মিটার পরে, পরবর্তী মানগুলি "12.3" এবং "12.30" এবং "12.4" এর পরিবর্তে "12.40" উপার্জন করতে পারে।
বিষয়টি হাতে হাতে ফিরে আসার জন্য, সাম্যের জন্য নলযোগ্য বস্তুর তুলনা করার একাধিক বুদ্ধিমান উপায় রয়েছে। সি # এর অবস্থানটি গ্রহণ করে যা এর ==
অপারেটরের আচরণের প্রতিবিম্বিত করা উচিত Equals
। VB.NET এর অবস্থানটি গ্রহণ করে যে এর আচরণের সাথে অন্য কয়েকটি ভাষার মতো আয়না হওয়া উচিত, যেহেতু যে কেউ Equals
আচরণটি চায় সে ব্যবহার করতে পারে Equals
। কিছু দিক থেকে, সঠিক সমাধানটি হ'ল "যদি" নির্মাণ করা হয় ত্রি-উপায়ে থাকা এবং শর্তসাপেক্ষ এক্সপ্রেশন যদি ত্রি-মূল্যযুক্ত ফলাফল ফেরত দেয় তবে কোডটির null
ক্ষেত্রে কী ঘটতে হবে তা অবশ্যই নির্দিষ্ট করতে হবে require যেহেতু ভাষা যেমন হয় তেমন কোনও বিকল্প নয়, এর পরের সেরা বিকল্পটি হ'ল বিভিন্ন ভাষা কীভাবে কাজ করে তা শিখতে হবে এবং স্বীকৃতি দিতে পারে যে সেগুলি এক নয়।
ঘটনাক্রমে, ভিজ্যুয়াল বেসিকের "ইস" অপারেটর, যা সি এর অভাবে রয়েছে, এটি কোনও নলযোগ্য বস্তুটি আসলে নাল কিনা তা পরীক্ষা করার জন্য ব্যবহার করা যেতে পারে। যদিও কেউ যুক্তিযুক্তভাবে প্রশ্ন নিতে পারে যে কোনও if
পরীক্ষাটি গ্রহণযোগ্য কিনা Boolean?
, সাধারণ তুলনা অপারেটরগুলি ফিরে আসার Boolean?
পরিবর্তে Boolean
নালাগুলি প্রকারের পরিবর্তে কার্যকর হওয়া বৈশিষ্ট্য। ঘটনাক্রমে, ভিবি.এনইটি-তে, যদি কেউ এর পরিবর্তে সাম্যতা অপারেটরটি ব্যবহার করার চেষ্টা করে Is
, একজন সতর্কতা পেয়ে যাবে যে তুলনার ফলাফলটি সর্বদা থাকবে Nothing
এবং Is
কোনও কিছু শূন্য হলে পরীক্ষা করতে চাইলে একজনকে ব্যবহার করা উচিত ।