2

我有一个返回对象的方法,该对象可以是多种不同数据类型之一,包括字符串、数字和布尔值;在某些时候我需要比较从这个方法返回的两个值的相等性。我使用==而不是Equals()因为我需要不同的数字类型来比较 - 即。3 == 3.0- 这适用于字符串和数字,但由于某种原因,当我比较布尔值时它会下降。

解决这个问题的最佳方法是什么?我宁愿不必检测类型并强制转换为 bool,但如果没有其他解决方案我会这样做

我的代码看起来像:

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
}
4

2 回答 2

3
public bool Compare(object value1, object value2)
{
    if (value1.GetType() == value2.GetType())
    {
        return value1.Equals(value2);
    }
    else
    {
        //your logic for handling different numbers
    }
}
于 2012-11-07T15:35:34.177 回答
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;
于 2012-11-07T15:37:39.650 回答