C#中 ToString 和 override ToString 的区别

public class p
{
    public string ToString(){
        return "p";
    }
}

public class c:p{
    public string ToString(){
        return "c";
    }
}
void Main()
{
    var obj = new c();
    Console.WriteLine ( (obj as p).ToString() );
}

 

如上例,如果想灵活控制输出类的方法,就不能使用 override ToString.

如改为 override ToString , 就不能输出父类对象的 ToString 了。

如果想输出真实的对象方法,而不是父类对象的方法,就需要 override。

如果父类是一个指定的虚方法,子类可以使用  new 修饰方法达到 灵活控制类方法的目的。

 

如果不使用 override ,经过装箱传递如:

object obj = c ;

obj.ToString();

将输出 类型名称。

所以使用还是不使用,应该酌情而定。

posted @ 2015-03-19 14:04  NewSea  阅读(1092)  评论(0编辑  收藏  举报