দুটি চেকই আলাদা। প্রথমটি পরিচয়ের জন্য পরীক্ষা করে , দ্বিতীয়টি সাম্যের জন্য । সাধারণভাবে দুটি পদ অভিন্ন, যদি তারা একই বস্তুর প্রতি উল্লেখ করে থাকে। এগুলি বোঝায় যে তারা সমান। দুটি পদ সমান, যদি তাদের মান একই হয়।
প্রোগ্রামিং পরিচয়ের শর্তাবলী সাধারণত রেফারেন্স সাম্যতা দ্বারা জগাখিচুড়ি হয়। যদি উভয় পদগুলির পয়েন্টার সমান (!) হয় তবে তারা যে বস্তুটিতে পয়েন্ট করছে সেটি হুবহু একই। যাইহোক, যদি পয়েন্টারগুলি পৃথক হয় তবে তারা যে জিনিসগুলিতে পয়েন্ট করছে তার মান এখনও সমান হতে পারে। সি # পরিচয় স্থিতিশীল Object.ReferenceEqualsসদস্য ব্যবহার করে চেক করা যায়, অ স্থিতিশীল Object.Equalsসদস্য ব্যবহার করে সাম্যতা পরীক্ষা করা হয় । আপনি বস্তু দুটি পূর্ণসংখ্যার ভোটদান যেহেতু (যা "বক্সিং" বলা হয়, BTW), operatior ==এর objectসঞ্চালিত প্রথম চেক, যা ডিফল্টভাবে হয় ম্যাপ Object.ReferenceEqualsএবং পরিচয় চেক। আপনি যদি স্পষ্টতাই অ-স্থিতিশীল- Equalsমেম্বারকে কল করেন তবে গতিশীল প্রেরণের কলটিতে ফলাফল আসে Int32.Equals, যা সাম্যের জন্য পরীক্ষা করে।
উভয় ধারণা একই, কিন্তু এক নয়। এগুলি প্রথমে বিভ্রান্তিকর বলে মনে হতে পারে তবে ছোট পার্থক্যটি খুব গুরুত্বপূর্ণ! "অ্যালিস" এবং "বব" নামে দুটি ব্যক্তির কল্পনা করুন। তারা দু'জনই হলুদ ঘরে বাস করছেন। এই অনুমানের ভিত্তিতে, অ্যালিস এবং বব এমন একটি জেলায় বাস করছেন, যেখানে ঘরগুলি কেবল তাদের রঙের চেয়ে আলাদা, তারা উভয়ই বিভিন্ন হলুদ ঘরে থাকতে পারে। যদি আপনি উভয় বাড়ির তুলনা করেন তবে আপনি চিনতে পারবেন যে সেগুলি একেবারে সমান, কারণ তারা উভয়ই হলুদ! যাইহোক, তারা একই বাড়িতে ভাগ করে নিচ্ছে না এবং সুতরাং তাদের বাড়িগুলি সমান , তবে অভিন্ন নয় । পরিচয়টি বোঝায় যে তারা একই বাড়িতে বসবাস করছে ।
দ্রষ্টব্য : কিছু ভাষা ===পরিচয় পরীক্ষা করতে অপারেটরকে সংজ্ঞায়িত করছে ।
short myShort = 0; int myInt = 0; Console.WriteLine("{0}{1}{2}", myShort.Equals(myInt), myInt.Equals(myShort), myInt == myShort);এখন এটি বাস্তবতার বিপরীতে দেখুন। আপনার ভবিষ্যদ্বাণী সঠিক ছিল? যদি তা না হয় তবে পার্থক্য ব্যাখ্যা করতে পারবেন?