public void TestUnifiedNumericMethods() { double double1 = 10, double2 = 20; int int1 = 11, int2 = 22; Console.WriteLine($"CommonMathDynamic basic version{CommonMathDynamic.Add(double1, double2)}"); Console.WriteLine($"CommonMathDynamic basic version{CommonMathDynamic.Add(int1, int2)}"); // Throws run-time error // string result = CommonMathDynamic.Add(1,4); //because it can't convert dynamic int result to string Console.WriteLine($"CommonMathDynamic basic version{CommonMathDynamicWithGenerics.Add(double1, double2)}"); Console.WriteLine($"CommonMathDynamic basic version{CommonMathDynamicWithGenerics.Add(int1, int2)}"); // Throws compile-time error // string result = CommonMathDynamicWithGenerics.Add(1, 4); // because it can't convert dynamic int result to string //short result = CommonMathDynamicWithGenericsExplicitCast.Add((short)1, (short)4); // runtime error because short is implicitly converted to int Console.WriteLine($"CommonMathDynamic basic version{CommonMathDynamicWithGenericsExplicitCast.Add(double1, double2)}"); Console.WriteLine($"CommonMathDynamic basic version{CommonMathDynamicWithGenericsExplicitCast.Add(int1, int2)}"); short result = CommonMathDynamicWithGenericsExplicitCast.Add((short)1, (short)4); }
static void Main(string[] args) { int int1 = 5; int int2 = 2; WriteLine($"Int overload {CommonMath.Add(int1, int2)}"); double double1 = 20; double double2 = 5; WriteLine($"Double overload {CommonMath.Add(double1, double2)}"); WriteLine($"Dynamic version {CommonMathDynamic.Add(int1, int2)}"); WriteLine($"Dynamic version {CommonMathDynamic.Add(double1, double2)}"); // string result = CommonMathDynamic.Add(1, 4); // run time error WriteLine($"Dynamic with generic version {CommonMathDynamicWithGenerics.Add(int1, int2)}"); WriteLine($"Dynamic with generic version {CommonMathDynamicWithGenerics.Add(double1, double2)}"); // string result2 = CommonMathDynamicWithGenerics.Add(1, 4); // compile time error short short1 = 1; short short2 = 2; //WriteLine($"Dynamic with generic version {CommonMathDynamicWithGenerics.Add(short1, short2)}"); WriteLine($"Dynamic with generic explicit cast version {CommonMathDynamicWithGenericsExplicitCast.Add(short1, short2)}"); WriteLine("\n\nPress enter to exit..."); ReadLine(); }