在.net中,这是如何定义IEnumerable
和IEnumerable<T>
。如果你定义了这样的东西(例如IMyInterface和IMyInterface),你会得到一个警告,在你的方法前面添加new
,这怎么可能?IEnumerable.GetEnumerator()和IEnumerable <T> .GetEnumerator()为什么它们没有新的关键字
(我知道实现我已经明确地实现它,我只是问definign接口,即使没有实现)
public interface IEnumerable
{
IEnumerator GetEnumerator();
}
public interface IEnumerable<out T> : IEnumerable
{
IEnumerator<T> GetEnumerator();
}
例
public interface IMy
{
IQueryable GetAll();
}
public interface IMy<T> : IMy
{
IQueryable<T> GetAll();
}
是什么让你觉得它不是[用新声明](https://referencesource.microsoft.com/#mscorlib/system/collections/generic/ienumerable.cs,35)? –
您无法声明新的IEnumerable或新的IMy。你必须定义一个使用该接口的类并声明新的类。 –
值得注意的是,在这种特殊情况下,“新”关键字从编译的角度来说什么也不做。这只是为了摆脱编译器警告。换句话说,编译器在说“要小心,你隐藏了一个成员”,而你正在告诉编译器“我知道我在隐藏它,不要警告我”。 – JuanR