我有两个对象,可以表示为int、float、bool或string。我需要对这两个对象执行加法运算,结果应该与c#产生的结果相同。例如,1+“Foo”将等于字符串“1Foo”,2+2.5将等于浮点数5.5,3+3将等于整数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;
}