IEnumerable.GetEnumerator()和IEnumerable <t> .GetEnumerator()为什么他们没有新的关键字

时间:2017-04-10 13:19:10

标签: c# .net

在.net中,这是IEnumerableIEnumerable<T>的定义方式。如果您定义类似这样的内容(例如IMyInterface和IMyInterface),您会收到警告,要在方法前添加new,这是怎么回事?

(我知道要实现我必须明确地实现它,我只是询问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();
    }

1 个答案:

答案 0 :(得分:0)

已经Damien commented确实new相关联。

来自Reference Source

public interface IEnumerable<out T> : IEnumerable
{
    // Returns an IEnumerator for this enumerable Object.  The enumerator provides
    // a simple way to access all the contents of a collection.
    /// <include file='doc\IEnumerable.uex' path='docs/doc[@for="IEnumerable.GetEnumerator"]/*' />
    new IEnumerator<T> GetEnumerator();
}

如果让Visual Studio为它创建存根,它确实没有new关键字。这取决于你。