IEnumerator的源代码在哪里?

时间:2011-07-22 20:49:16

标签: c#

我只是从http://referencesource.microsoft.com/netframework.aspx下载.Net框架源代码 这是Net_4.msi。但是在我安装之后,我找不到IEnumerator代码文件。 我只是想知道为什么Net_4.msi不包含所有.Net类。


更新: 感谢您的回复并对此感到抱歉。

我不是要求IEnumerator的定义。 我认为“Net_4.msi”应该包括所有.Net类/接口的源代码文件。 例如在文件夹Net_4\Source\ndp\clr\src\BCL\System\Collections中,您可以找到IList.cs,ICollection.cs,IDictionary.cs和IEnumerable.cs。 这4个文件分别是IList,ICollection,IDictionary和IEnumerable源代码文件。 请参阅this image

但我找不到文件:IEnumerator.cs。我只是想知道IEnumerator.cs在哪里。为什么IEnumerator.cs不包含在“Net_4.msi”中?

2 个答案:

答案 0 :(得分:5)

正如loki所指出的那样,IEnumerator<T>是一个接口,而不是具体的类,所以没有实现。但是,您可以寻找一个an example of how to implement the interface for your custom type(s).

要直接回答您的问题,它在mscorlib.dll中定义,这是整个.NET 4.0文件:

#region Assembly mscorlib.dll, v4.0.30319
// C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\mscorlib.dll
#endregion

using System;
using System.Collections;

namespace System.Collections.Generic
{
    // Summary:
    //     Supports a simple iteration over a generic collection.
    //
    // Type parameters:
    //   T:
    //     The type of objects to enumerate.This type parameter is covariant. That is,
    //     you can use either the type you specified or any type that is more derived.
    //     For more information about covariance and contravariance, see Covariance
    //     and Contravariance in Generics.
    public interface IEnumerator<out T> : IDisposable, IEnumerator
    {
        // Summary:
        //     Gets the element in the collection at the current position of the enumerator.
        //
        // Returns:
        //     The element in the collection at the current position of the enumerator.
        T Current { get; }
    }
}

答案 1 :(得分:2)

IEnumerator不是一个类,它是接口。没有代码。