В чем разница между new и override? - C#
Формулировка задачи:
Цитирую с msdn:
Для чего нужно вообще использовать new? поведение методов одно и то же что и при override.
Или мой код слишком примитивен? Хочу просто разобраться для чего существует два варианта. Или это же просто для того, чтобы не вводить в заблуждение других разработчиков, если методы с одинаковыми именами, но разными совершенно ф-ми?
и получим тот же результат. Так мне интересно для чего все же new?
Если необходимо, чтобы производный член имел то же имя, что и член базового класса, но не нужно, чтобы он участвовал в виртуальном вызове, можно использовать ключевое слово new. Ключевое слово new располагается перед возвращаемым типом замещаемого члена класса. Ниже приведен пример.
class A { public A() { Console.WriteLine("My A."); } public virtual void print() { Console.WriteLine("Print A."); } } class B : A { public B() { Console.WriteLine("My B."); print(); } public new void print() { //base.print(); Console.WriteLine("Print B."); } } class Program { static void Main(string[] args) { A a = new A(); B b = new B(); } }
Кстати, в классе C наследуемом от класса В уже перегрузки метода print() сделать нельзя.
Но даже в этом случае мы же можем использовать в классе В:
public sealed override void print() {}
Решение задачи: «В чем разница между new и override?»
textual
Листинг программы
class Base { public virtual void Do1() { Console.WriteLine("Hello World"); } public virtual void Do2() { Console.WriteLine("Hello World"); } } class Test: Base { string Name=""; public Test(string name){Name=name;} public new void Do1(){Console.WriteLine("Hello " + Name); } public override void Do2(){Console.WriteLine("Hello " + Name); } } class Program { static void Main(string[] args) { Test t = new Test("Bill"); (t as Base).Do1(); (t as Base).Do2(); Console.Read(); } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д