私は自分のBASIC言語を開発していました。c#: "if" weird
tokens[1] = 3;
tokens[3] = 3;
tokens[2] = "==";
と私のコンソールの出力は、本当に奇妙です
object firstElement = tokens[1];
object secondElement = tokens[3];
string conditionType = tokens[2];
bool resultOfCondition = false;
if (conditionType == "==")
{
if (firstElement == secondElement)
{
resultOfCondition = true;
Console.WriteLine("DEBUG: true!");
}
else
{
resultOfCondition = false;
Console.WriteLine("DEBUG: false!");
}
}
else if (conditionType == "!=")
{
}
else
{
throw new System.ArgumentException("It's not any type of contidion!", "original");
}
:コマンド場合、私が作っていたとき、私はこれを得た
DEBUG: false!
私は何が起こっているか分かりません、なぜ出力が偽であるのか! 誰かが私を助けることができますか?
あなたがプログラムをステップ実行するとき、何が起こりますか? – mrsargent
firstElementとsecondElementの値は何ですか?あなたが言ったことを正確に表示しています。 – hRdCoder
'firstElement.Equals(secondElement)'を使用する必要があります。問題は '=='は 'object'の参照平等を実行することです。オブジェクトは両方とも同じボックス化された値「3」を含んでもよいが、同じオブジェクトではなく、同じ内容の2つの異なるオブジェクトである。 – Kyle