永发信息网

关于C# 中方法重载 new 的一个问题

答案:3  悬赏:10  手机版
解决时间 2021-02-13 22:28
  • 提问者网友:且恨且铭记
  • 2021-02-13 11:35
父类中
public virtual void Display(){..........}
然后在子类中可以用new 和override两种
我有个疑问就是
public new void Display(){..........}

public void Display(){..........} 这两个啥区别 我看到结果是一样的

我问的不是override与new 而是写上new和不写的区别,VS上会出现一条波浪线,但是能运行,我想知道他们却别
最佳答案
  • 五星知识达人网友:罪歌
  • 2021-02-13 12:56
不写new 会提示警告,写new表示隐藏父类同名方法
全部回答
  • 1楼网友:患得患失的劫
  • 2021-02-13 15:06

console.writeline()方法是将要输出的字符串与换行控制字符一起输出,当次语句执行完毕时,光标会移到目前输出字符串的下一行.

至于console.write()方法,光标会停在输出字符串的最后一个字符后,不会移动到下一行。

如果代码没错的话,那就 ,abcd就都不是对的,因为每输出一行后,会换行再次输出

  • 2楼网友:忘川信使
  • 2021-02-13 13:27
假如父类有中虚方法V,且在方法A中调用了V,而子类方法Foverride了V,则再实际运行中,方法A中调用了V实际上调用的是子类的F,假如你子类加了new,它就只调用父类的V而不会调用F。     class Program     {         static void Main(string[] args)         {             C1 c1 = new C1();             c1.A();//父类的V             C2 c2 = new C2();             c2.A();//C2 override V             Console.ReadLine();         }     }     public class P     {         public void A()         {             V();         }         public virtual void V()         {             Console.WriteLine("父类的V");         }     }     public class C1 : P     {         public new void V()         {             //没机会输出             Console.WriteLine("C1 new V");         }     }     public class C2 : P     {         public override void V()         {             Console.WriteLine("C2 override V");         }     }
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯