我有一个返回对象的方法,该对象可以是多种不同数据类型之一,包括字符串,数字和bool;在某些时候,我需要比较从这个方法返回的两个值的相等性。我正在使用==
而不是Equals()
,因为我需要不同的数字类型进行比较 - 即。 3 == 3.0
- 对于字符串和数字工作正常,但由于某些原因,当我比较布尔值时,它会崩溃。
解决此问题的最佳方法是什么?如果没有其他解决方案,我宁愿不必检测类型并进行强制转换,但如果没有其他解决方案,我会这样做
我的代码类似于:
private object GetValue() {
// does some stuff, returns either a boolean, string or number value
}
var value1 = GetValue();
var value2 = GetValue();
if (value1 == value2) {
// do something
}
答案 0 :(得分:2)
public bool Compare(object value1, object value2)
{
if (value1.GetType() == value2.GetType())
{
return value1.Equals(value2);
}
else
{
//your logic for handling different numbers
}
}
答案 1 :(得分:0)
如何让你的函数返回字符串,然后只是将结果解析为bool或int或你想要的任何东西,然后进行比较?
编辑:
private string GetValue() {}
string val = getValue();
string val2 = getValue();
bool a1;
bool b1;
int a2;
int b2;
double;
double;
bool r1 = bool.TryParse(val, out a1);
bool r2 = bool.TryParse(val2, out b1);
bool r3 = int.TryParse(val, out a2);
bool r4 = int.TryParse(val2, out b2);
bool r5 = double.TryParse(val, out a3);
bool r6 = double.TryParse(val2, out b3);
if ((a1 == b1 && r1 && r2)) || (a2 == b2 && r3 && r4)) || (a3 == b3 && r5 && r6))
return true;