【发布时间】:2019-12-30 22:35:30
【问题描述】:
我尝试使用等号运算符“==”比较两个 int 值和两个字符串值。我使用了 3 个函数,它们的输入参数类型为动态、对象和 int/string。当我使用字符串参数进行比较时,似乎在所有 3 种情况下使用 ' == ' 运算符都会返回正确答案。使用 int 类型时,在 object 输入类型参数的情况下,即使 2 个 int 值相等,它也会返回 false。我知道'=='运算符,如果是对象,它会比较2个对象在内存中是否具有相同的引用,所以这可以解释为什么我收到错误。但我不明白为什么在字符串类型的情况下它工作得很好。
代码:
public static bool CompareD(dynamic a, dynamic b)
{
return a == b;
}
public static bool CompareO(object a, object b)
{
return a == b;
}
public static bool CompareS(int a, int b)
{
return a == b;
}
我期待当我使用字符串时,在对象类型输入参数的情况下,即使这两个字符串相等,也会收到 false,就像 int 的情况一样,但我收到了正确的答案。
【问题讨论】:
标签: c# string object dynamic compare