c# Most efficient way to combine two objects
        Posted  
        
            by Dested
        on Stack Overflow
        
        See other posts from Stack Overflow
        
            or by Dested
        
        
        
        Published on 2010-03-22T07:08:08Z
        Indexed on 
            2010/03/22
            7:11 UTC
        
        
        Read the original article
        Hit count: 470
        
I have two objects that can be represented as an int, float, bool, or string. I need to perform an addition on these two objects with the results being the same thing c# would produce as a result. For instance 1+"Foo" would equal the string "1Foo", 2+2.5 would equal the float 5.5, and 3+3 would equal the int 6 . Currently I am using the code below but it seems like incredible overkill. Can anyone simplify or point me to some way to do this efficiently?
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;
    }
© Stack Overflow or respective owner