
voID Main(){ Y y = new Y(); Console.Writeline(y);}// define other methods and classes hereclass X{ public virtual String ToString() { return "Hi,I'm X"; }}class Y : X{ public overrIDe String ToString() { return "Hi,I'm Y," + base.ToString(); }}解决方法 那就是在X中创建一个名为ToString()的新虚拟方法,它隐藏了Object.ToString().所以如果你有: Y y = new Y();X x = y;Object o = y;Console.Writeline(y.ToString()); // Shows "Hi,Hi,I'm X";Console.Writeline(x.ToString()); // Shows "Hi,I'm X";Console.Writeline(o.ToString()); // Calls object.ToString; shows just "Y"
打电话给
Console.Writeline(y);
相当于最后一行,这就是打印类型名称的原因.
基本上,您的X.ToString方法应该覆盖object.ToString()方法:
public overrIDe String ToString() { return "Hi,I'm X";} 总结 以上是内存溢出为你收集整理的c# – 在基类中标记ToString虚拟,会发生什么?全部内容,希望文章能够帮你解决c# – 在基类中标记ToString虚拟,会发生什么?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)