public void should_choose_correct_overloading_method_at_compile_time_2() { var demoObject = new MethodOverloadDemoClass(); string chosenOne = demoObject.Foo((object)1); // change variable value to correct one. const string expected = "Foo(object)"; Assert.Equal(expected, chosenOne); }
public void should_choose_correct_overloading_method_at_compile_time_3() { var demoObject = new MethodOverloadDemoClass(); const short argument = 2; string chosenOne = demoObject.Foo(argument); // change variable value to correct one. const string expected = "Foo(int)"; //short是int的一种情况; Assert.Equal(expected, chosenOne); }
public void should_be_able_to_choose_most_specific_type_when_overloading() { var demoClass = new MethodOverloadDemoClass(); string returnValueForBaseClassOverloading = demoClass.Foo(new MethodOverloadBaseClass()); string returnValueForDerivedClassOverloading = demoClass.Foo(new MethodOverloadDerivedClass()); string returnValueForCastingOverloading = demoClass.Foo((MethodOverloadBaseClass)(new MethodOverloadDerivedClass())); const string expectedBaseClassOverloadingValue = "Foo(MethodOverloadBaseClass)"; const string expectedDerivedClassOverloadingValue = "Foo(MethodOverloadDerivedClass)"; const string expectedCastOverloadingValue = "Foo(MethodOverloadBaseClass)"; Assert.Equal(expectedBaseClassOverloadingValue, returnValueForBaseClassOverloading); Assert.Equal(expectedDerivedClassOverloadingValue, returnValueForDerivedClassOverloading); Assert.Equal(expectedCastOverloadingValue, returnValueForCastingOverloading); }