C#里怎么样使用new修饰符来让类智能选择基类函数还是派生类函数?
在C#里有一个特殊的用法,就是在创建与基类相同的函数时,
如果使用一个new修饰符,就会导致它会根据变量的类型而选择不同的函数运行。
这是一个比较特殊的使用方法,一般情况下,不建议这样使用。
除非有特殊的领域。
使用例子演示如下:
/*
* C# Program to Demonstrate New modifier
*/
using System;
class TEST
{
public void func()
{
Console.WriteLine("TEST.func");
}
}
class TEST1 : TEST
{
public new void func()
{
Console.WriteLine("TEST1.func");
}
}
class Program
{
static void Main()
{
TEST ref1 = new TEST();
TEST ref2 = new TEST1();
TEST1 ref3 = new TEST1();
ref1.func();
ref2.func();
ref3.func();
Console.Read();
}
}
输出如下:
Enter a Number : 25 TEST.func TEST.func TEST1.func
在这里特别要注意
TEST ref2 = new TEST1();
这行代码的运行输出。