সি # তে আমার দুটি জিনিস রয়েছে এবং এটি বুলিয়ান বা অন্য কোনও ধরণের কিনা তা আমি জানি না। তবে আমি যখন সেই সিটি তুলনা করার চেষ্টা করি তখন # সঠিক উত্তর দিতে ব্যর্থ হয়। আমি VB.NET এর সাথে একই কোডটি চেষ্টা করেছি এবং এটি এটি করেছে!
কেউ যদি আমাকে বলতে পারে যে কোনও সমাধান আছে তবে এটি কীভাবে ঠিক করবেন?
সি #:
object a = true;
object b = true;
object c = false;
if (a == b) c = true;
MessageBox.Show(c.ToString()); //Outputs False !!
VB.NET:
Dim a As Object = True
Dim b As Object = True
Dim c As Object = False
If (a = b) Then c = True
MessageBox.Show(c.ToString()) '// Outputs True
a
বক্সিং পাবেন এবং এতে একটি বাক্স থাকবে true
। আপনি নির্ধারিত যখন b
আপনি পেতে অন্য বক্স এছাড়াও ধারণকারী true
। আপনি যখন তুলনা করেন a
এবং b
, কারণ উভয়ই সংকলন-টাইপ ধরণের object
, আপনি operator ==(object, object)
সি # ভাষা নির্দিষ্টকরণ দ্বারা সংজ্ঞায়িত ওভারলোডটিকে কল করেন । রেফারেন্সগুলি একই অবজেক্টে যায় কিনা তা এই ওভারলোড পরীক্ষা করে। যেহেতু আপনার দুটি বাক্স রয়েছে, ফলস্বরূপ false
, এবং "নীচে" আপনার বিবৃতিটি if
চলবে না। এটি আরও ভালভাবে বুঝতে, এইটির কার্যভারটি পরিবর্তন করার চেষ্টা করুন b
: object b = a;
এখন আপনার কাছে কেবল একটি বাক্স রয়েছে।
a.Equals(b)
?