Автор Mikle Melvin задал вопрос в разделе Другие языки и технологии
Что такое "интерфейс"? Вот, я читаю - "IDisposable - это такой интерфейс..."... и Что такое IDisposable? и получил лучший ответ
Ответ от Голый Мужик[гуру]
Интерфейс - такое хитрое наследование, которое отражает некий аспект поведения, в отличие от непосредственно наследования, отражающего некоторую сущность. Пример наследования: есть тип "птица" и есть тип "ворона". Ворона является птицей - следовательно, тип "ворона" является производным от типа "птица". Пример с интерфейсом: есть тип "пегас" - летучая коняжка. Пегас не является смесью птицы и лошади, это совершенно иной тип животных, но между пегасом и вороной есть сходство в поведении: оба умеют летать. Можно было бы ввести интерфейс IFliable с методом Fly() и сказать, что и пегас, и птица реализуют его. Кроме того, пегас может ходить, чем походит на собаку, скажем. Однако связывать наследственной связью собаку и пегаса неправильно, зато можно обобщить их реализацией интерфейса IWalkable.
Зачем это нужно.
Пример. В стандартной библиотеке есть интерфейс IEnumerable< T >, и если тип реализует его, то экземпляры этого типа можно использовать в конструкции foreach:
class MyClass : IEnumerable< int >
{
public IEnumerator< int> GetEnumerator()
{
for (int i = 0; i < 10; i++)
yield return i;
}
}
...
MyClass my_class = new MyClass();
foreach (int n in my_class)
Console.WriteLine(n);
Интерфейсы легки за счёт отсутствия виртуальных методов, их можно реализовывать много, в отличие от наследования, где супертип может быть только один. Интерфейс просто гарантирует наличие у типа заданных методов (а также свойств) , ни к чему большему не обязывая.
Интерфейс IDisposable служит для типов, в которых происходит использование каких-либо ресурсов: файлов, сети, принтеров и так далее. В методе Dispose(), заявленном этим интерфейсом, происходит освобождение таких ресурсов. Например, IDisposable позволяет получить аналогию деструктора для типов, его реализующих, там, где это надо, с помощью конструкции using:
using (StrieamWriter writer = File.CreateText("file.txt"))
{
writer.Write("Hallo the");
} // При выходе из этой скобки автоматиччески будет вызван метод Dispose() и файл будет закрыт.
Если говорить о программировании интерфейс — это класс, который обеспечивает программисту простой или более программно-специфический способ доступа к другим классам.
IDisposable - это интерфейс в программировании на С+ с методом - Dispose()
Существует только две ситуации, когда необходимо реализовывать IDisposable:
В классе есть неуправляемые ресурсы
В классе есть управляемые (IDisposable) ресурсы
Основное назначение этого интерфейса заключается в высвобождении неуправляемых ресурсов. Сборщик мусора автоматически высвобождает память, выделенную для управляемого объекта, если этот объект уже не используется. Однако он не может предсказать момент выполнения сбора мусора. Кроме того, у сборщика мусора нет сведений о неуправляемы ресурсах, таких как дескрипторы окон, или открытые файлы и потоки.
МСДН
Интерфейс - это способ взаимдойствия между чем-то и чем-то (допустим Операционная Система - это интерфейс взаимодействия пользователя с компьютером)
Вопрос по C# StreamReader
у объекта стримридера есть такая функция считать строку ReadLine()
считываешь, добавляешь её к
подробнее...