1. C# / Говнокод #25475

    +2

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    using big = System.Numerics.BigInteger;
    class Mega
    {
        readonly static Type
            _dbl = typeof(double),
            _str = typeof(string),
            _chr = typeof(char),
            _int = typeof(int),
            _big = typeof(big);
        object o;
        public Mega(object O) => o = O;
        public static Mega operator +(Mega a, Mega b) {
            Type ta = a.o.GetType(), tb = b.o.GetType();
            if (ta == _str || tb == _str)
                return new Mega(String.Concat(a.o, b.o));
            if (ta == _dbl) {
                if (tb == _dbl) return new Mega((double)a.o + (double)b.o);
                if (tb == _chr) return new Mega((double)a.o + (char)b.o);
                if (tb == _int) return new Mega((double)a.o + (int)b.o);
            } if (tb == _dbl) {
                if (ta == _chr) return new Mega((char)a.o + (double)b.o);
                if (ta == _int) return new Mega((int)a.o + (double)b.o);
            } if (ta == _int) {
                if (tb == _chr) return new Mega((int)a.o + (char)b.o);
                if (tb == _int) return new Mega((int)a.o + (int)b.o);
                if (tb == _big) return new Mega((int)a.o + (big)b.o);
            } if (ta == _big) {
                if (tb == _chr) return new Mega((big)a.o + (char)b.o);
                if (tb == _int) return new Mega((big)a.o + (int)b.o);
                if (tb == _big) return new Mega((big)a.o + (big)b.o);
            } if (ta == _chr) {
                if (tb == _chr) return new Mega((char)((char)a.o + (char)b.o));
                if (tb == _int) return new Mega((char)a.o + (int)b.o);
            } throw new Exception("bad operators types");
        } public override string ToString() => o.ToString();
    }

    "Некий класс Mega подразумевает совместную работу нескольких типов в одной оболочке."
    // другие операторы и методы такие же, не стал копировать

    Запостил: groser, 25 Марта 2019

    Комментарии (2) RSS

    Добавить комментарий