SqlDataReader's класс оператор включает в себя IDataReader, IDataRecord и IDisposable, даже если все они выполнены его базовый классом, DbDataReader:Ключевое слово класса - явно указывать унаследованные интерфейсы?
public class SqlDataReader : DbDataReader,
IDataReader, IDisposable, IDataRecord {...}
public abstract class DbDataReader : MarshalByRefObject,
IDataReader, IDisposable, IDataRecord, IEnumerable {...}
В этом случае, есть некоторое техническое преимущество, указывающие, что производный класс реализует интерфейсы, ИТС базовый класс уже указывает, что он реализует? (Я не могу придумать этого. Удивление, если это устаревшая реликвия, опечатка или что-то сделано для целей документации.)
Где вы это видели? Не удается увидеть это на сайте [sourcesource.microsoft.com] (https://referencesource.microsoft.com/#System.Data/System/Data/SqlClient/SqlDataReader.cs). – Dmitry
@Dmitry, ну 'IDataReader' определен в обоих, но ответ нет, нет причин добавлять избыточные объявления интерфейса. –
@KirkWoll Что касается явной реализации интерфейса? В классе 'SqlDataReader' есть один:' IDataReader IDataRecord.GetData (int i) '. – Dmitry