我有两个可以表示为 int、float、bool 或 string 的对象。我需要对这两个对象进行加法运算,结果与 c# 产生的结果相同。例如 1+"Foo" 等于字符串 "1Foo",2+2.5 等于 float 5.5,3+3 等于 int 6。目前我正在使用下面的代码,但这似乎是令人难以置信的矫枉过正。任何人都可以简化或指出一些有效地做到这一点的方法吗?
private object Combine(object o, object o1) {
float left = 0;
float right = 0;
bool isInt = false;
string l = null;
string r = null;
if (o is int) {
left = (int)o;
isInt = true;
}
else if (o is float) {
left = (float)o;
}
else if (o is bool) {
l = o.ToString();
}
else {
l = (string)o;
}
if (o1 is int) {
right = (int)o1;
}
else if (o is float) {
right = (float)o1;
isInt = false;
}
else if (o1 is bool) {
r = o1.ToString();
isInt = false;
}
else {
r = (string)o1;
isInt = false;
}
object rr;
if (l == null) {
if (r == null) {
rr = left + right;
}
else {
rr = left + r;
}
}
else {
if (r == null) {
rr = l + right;
}
else {
rr = l + r;
}
}
if (isInt) {
return Convert.ToInt32(rr);
}
return rr;
}