IEnumerable.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / clr / src / BCL / System / Collections / Generic / IEnumerable.cs / 1305376 / IEnumerable.cs

                            // ==++== 
//
//   Copyright (c) Microsoft Corporation.  All rights reserved.
//
// ==--== 
/*============================================================
** 
** Interface:  IEnumerable 
**
** [....] 
**
**
** Purpose: Interface for providing generic IEnumerators
** 
**
===========================================================*/ 
namespace System.Collections.Generic { 
    using System;
    using System.Collections; 
    using System.Runtime.InteropServices;
    using System.Runtime.CompilerServices;
    using System.Diagnostics.Contracts;
 
    // Implement this interface if you need to support foreach semantics.
 
    // Note that T[] : IList, and we want to ensure that if you use 
    // IList, we ensure a YourValueType[] can be used
    // without jitting.  Hence the TypeDependencyAttribute on SZArrayHelper. 
    // This is a special hack internally though - see VM\compile.cpp.
    // The same attribute is on IList and ICollection.
    [TypeDependencyAttribute("System.SZArrayHelper")]
    [ContractClass(typeof(IEnumerableContract<>))] 
#if FEATURE_CORECLR
    public interface IEnumerable : IEnumerable 
#if false 
    {
    } 
#endif
#else
    public interface IEnumerable : IEnumerable
#endif 
    {
        // Returns an IEnumerator for this enumerable Object.  The enumerator provides 
        // a simple way to access all the contents of a collection. 
        /// 
        new IEnumerator GetEnumerator(); 
    }

    [ContractClassFor(typeof(IEnumerable<>))]
    internal class IEnumerableContract : System.Collections.IEnumerableContract, IEnumerable 
    {
        [Pure] 
        IEnumerator IEnumerable.GetEnumerator() 
        {
            Contract.Ensures(Contract.Result>() != null); 
            return default(IEnumerator);
        }
    }
} 

// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
                        

Link Menu

Network programming in C#, Network Programming in VB.NET, Network Programming in .NET
This book is available now!
Buy at Amazon US or
Buy at Amazon UK