IDictionary.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 / IDictionary.cs / 1305376 / IDictionary.cs

                            // ==++== 
//
//   Copyright (c) Microsoft Corporation.  All rights reserved.
//
// ==--== 
/*============================================================
** 
** Interface:  IDictionary 
**
** [....] 
**
**
** Purpose: Base interface for all generic dictionaries.
** 
**
===========================================================*/ 
namespace System.Collections.Generic { 
    using System;
    using System.Diagnostics.Contracts; 

    // An IDictionary is a possibly unordered set of key-value pairs.
    // Keys can be any non-null object.  Values can be any object.
    // You can look up a value in an IDictionary via the default indexed 
    // property, Items.
    [ContractClass(typeof(IDictionaryContract<,>))] 
    public interface IDictionary : ICollection> 
    {
        // Interfaces are not serializable 
        // The Item property provides methods to read and edit entries
        // in the Dictionary.
        TValue this[TKey key] {
            get; 
            set;
        } 
 
        // Returns a collections of the keys in this dictionary.
        ICollection Keys { 
            get;
        }

        // Returns a collections of the values in this dictionary. 
        ICollection Values {
            get; 
        } 

        // Returns whether this dictionary contains a particular key. 
        //
        bool ContainsKey(TKey key);

        // Adds a key-value pair to the dictionary. 
        //
        void Add(TKey key, TValue value); 
 
        // Removes a particular key from the dictionary.
        // 
        bool Remove(TKey key);

        bool TryGetValue(TKey key, out TValue value);
    } 

    [ContractClassFor(typeof(IDictionary<,>))] 
    internal class IDictionaryContract : IDictionary 
    {
        TValue IDictionary.this[TKey key] { 
            get { return default(TValue); }
            set { }
        }
 
        ICollection IDictionary.Keys {
            get { 
                Contract.Ensures(Contract.Result>() != null); 
                return default(ICollection);
            } 
        }

        // Returns a collections of the values in this dictionary.
        ICollection IDictionary.Values { 
            get {
                Contract.Ensures(Contract.Result>() != null); 
                return default(ICollection); 
            }
        } 

        bool IDictionary.ContainsKey(TKey key)
        {
            return default(bool); 
        }
 
        void IDictionary.Add(TKey key, TValue value) 
        {
        } 

        bool IDictionary.Remove(TKey key)
        {
            //Contract.Ensures(Contract.Result() == false || ((ICollection>)this).Count == Contract.OldValue(((ICollection>)this).Count) - 1);  // not threadsafe 
            return default(bool);
        } 
 
        bool IDictionary.TryGetValue(TKey key, out TValue value)
        { 
            value = default(TValue);
            return default(bool);
        }
 
        #region ICollection> Members
 
        void ICollection>.Add(KeyValuePair value) 
        {
            //Contract.Ensures(((ICollection>)this).Count == Contract.OldValue(((ICollection>)this).Count) + 1);  // not threadsafe 
        }

        bool ICollection>.IsReadOnly
        { 
            get { return default(bool); }
        } 
 
        int ICollection>.Count
        { 
            get {
                Contract.Ensures(Contract.Result() >= 0);
                return default(int);
            } 
        }
 
        void ICollection>.Clear() 
        {
        } 

        bool ICollection>.Contains(KeyValuePair value)
        {
            // Contract.Ensures(((ICollection>)this).Count > 0 || Contract.Result() == false); // not threadsafe 
            return default(bool);
        } 
 
        void ICollection>.CopyTo(KeyValuePair[] array, int startIndex)
        { 
            //Contract.Requires(array != null);
            //Contract.Requires(startIndex >= 0);
            //Contract.Requires(startIndex + ((ICollection>)this).Count <= array.Length);
        } 

        bool ICollection>.Remove(KeyValuePair value) 
        { 
            // No information if removal fails.
            return default(bool); 
        }

        IEnumerator> IEnumerable>.GetEnumerator()
        { 
            Contract.Ensures(Contract.Result>>() != null);
            return default(IEnumerator>); 
        } 

        IEnumerator IEnumerable.GetEnumerator() 
        {
            Contract.Ensures(Contract.Result() != null);
            return default(IEnumerator);
        } 

        #endregion 
    } 
}

// 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