Автор Влад Твердохлебов задал вопрос в разделе Другие языки и технологии
Виртуальные функции в c#,зачем они? и получил лучший ответ
Ответ от [гуру]
override означает перекрывание одноименного метода/свойства класса-потомка. по сути замена этим свойством старого свойства
например, в классе-потомке Form есть метод OnPaint, который вызывается при отрисовке формы. в нем ничего не происходит. мы в своем классе Form1, унаследованном от Form, объявляем такой метод с модификатором override - и пишем в нем некий код. теперь при отрисовке выполняется этот код
Ответ от Ирэн Ницше[гуру]
1. Если вы создаете два похожих класса. удобнее не копипастить общие члены. а наследовать один от другого или оба от некоего общего, который сам по себе не нужен, а только для наследования.
Если вы хотите дополнить класс из готовой библиотеки, тоже нужно наследование.
2. И если вы хотите. чтобы в ваших классах был метод с одинаковым названием, но разным кодом, то в классе-предке эти методы делаете виртуальными. а в наследниках - override. Без этих слов не получится. так как компилятор не поймет. какой из вариантом метода когда применять.
1. Если вы создаете два похожих класса. удобнее не копипастить общие члены. а наследовать один от другого или оба от некоего общего, который сам по себе не нужен, а только для наследования.
Если вы хотите дополнить класс из готовой библиотеки, тоже нужно наследование.
2. И если вы хотите. чтобы в ваших классах был метод с одинаковым названием, но разным кодом, то в классе-предке эти методы делаете виртуальными. а в наследниках - override. Без этих слов не получится. так как компилятор не поймет. какой из вариантом метода когда применять.
Ответ от 256[гуру]
Нужен что переопределять метод. К примеру у нас есть стандартный метод перевода объекта в string - ToString
class Class1
{
}
class Class2
{
public override string ToString()
{
return "ToStr";
}
}
class Program
{
static void Main(string[] args)
{
Class1 cl1 = new Class1();
Console.WriteLine(cl1.ToString());
Class2 cl2 = new Class2();
Console.WriteLine(cl2.ToString());
Console.ReadKey();
}
}
Посмотрите разницу.
Нужен что переопределять метод. К примеру у нас есть стандартный метод перевода объекта в string - ToString
class Class1
{
}
class Class2
{
public override string ToString()
{
return "ToStr";
}
}
class Program
{
static void Main(string[] args)
{
Class1 cl1 = new Class1();
Console.WriteLine(cl1.ToString());
Class2 cl2 = new Class2();
Console.WriteLine(cl2.ToString());
Console.ReadKey();
}
}
Посмотрите разницу.
Ответ от Николай Веселуха[гуру]
ссылка
ссылка
Ответ от 3 ответа[гуру]
Привет! Вот подборка тем с ответами на Ваш вопрос: Виртуальные функции в c#,зачем они?
Вопрос по C# StreamReader
у объекта стримридера есть такая функция считать строку ReadLine()
считываешь, добавляешь её к
подробнее...