【发布时间】:2012-07-02 20:50:42
【问题描述】:
当我比较两个类型为 object 且都包含相同值的变量时,
使用== 运算符的比较结果产生false。
object Var1 = "X";
object Var2 = "X";
// This produces false result
bool Match = Var1 == Var2;
为什么会这样?
编辑:以上是实际工作的代码!
我基于我的真实代码 像这样并且不起作用:
ChoiceValue = Choice.GetValue(FieldTemplate.ValueDataType);
if (ChoiceValue == Field.Value) RadioButton.IsChecked = true;
ChoiceValue 是 object 并且 Field.Value 是类型为 object 的属性。
显然在不同情况下的工作方式不同。
【问题讨论】:
-
请阅读引用类型和值类型,以及它们的
Equals方法。 -
我使用 LINQPad 的结果:是的
-
之所以如此,是因为
==的行为是这样定义的。如果您想知道为什么它是这样定义的,这必须是有用的:blogs.msdn.com/b/ericlippert/archive/2009/04/09/… -
原始示例给出了 True 结果,我使用 Real 代码进行了编辑,结果为 False
标签: c# comparison string-comparison