Нашли или выдавили из себя код, который нельзя назвать нормальным,
на который без улыбки не взглянешь?
Не торопитесь его удалять или рефакторить, — запостите его на
говнокод.ру, посмеёмся вместе!
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 подразумевает совместную работу нескольких типов в одной оболочке."
// другие операторы и методы такие же, не стал копировать
Комментарии (2) RSS