比较强制转换为对象的值类型

时间:2012-11-07 15:15:20

标签: c# casting boolean equality value-type

我有一个返回对象的方法,该对象可以是多种不同数据类型之一,包括字符串,数字和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
}

2 个答案:

答案 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;