﻿<?xml version="1.0" encoding="utf-8"?><Type Name="IDictionary" FullName="System.Collections.IDictionary" FullNameSP="System_Collections_IDictionary" Maintainer="ecma"><TypeSignature Language="ILASM" Value=".class interface public abstract IDictionary implements System.Collections.ICollection, System.Collections.IEnumerable" /><TypeSignature Language="C#" Value="public interface IDictionary : System.Collections.ICollection" /><TypeSignature Language="ILAsm" Value=".class public interface auto ansi abstract IDictionary implements class System.Collections.ICollection, class System.Collections.IEnumerable" /><MemberOfLibrary>BCL</MemberOfLibrary><AssemblyInfo><AssemblyName>mscorlib</AssemblyName><AssemblyPublicKey>[00 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 ]</AssemblyPublicKey><AssemblyVersion>1.0.5000.0</AssemblyVersion><AssemblyVersion>2.0.0.0</AssemblyVersion><AssemblyVersion>4.0.0.0</AssemblyVersion></AssemblyInfo><Interfaces><Interface><InterfaceName>System.Collections.ICollection</InterfaceName></Interface></Interfaces><Attributes><Attribute><AttributeName>System.Runtime.InteropServices.ComVisible(true)</AttributeName></Attribute></Attributes><Docs><remarks><attribution license="cc4" from="Microsoft" modified="false" /><para>The <see cref="T:System.Collections.IDictionary" /> interface is the base interface for nongeneric collections of key/value pairs. For the generic version of this interface, see <see cref="T:System.Collections.Generic.IDictionary`2" />.</para><para>Each element is a key/value pair stored in a <see cref="T:System.Collections.DictionaryEntry" /> object.</para><para>Each pair must have a unique key. Implementations can vary in whether they allow the key to be null.  The value can be null and does not have to be unique. The <see cref="T:System.Collections.IDictionary" /> interface allows the contained keys and values to be enumerated, but it does not imply any particular sort order.</para><para><see cref="T:System.Collections.IDictionary" /> implementations fall into three categories: read-only, fixed-size, variable-size. A read-only <see cref="T:System.Collections.IDictionary" /> object cannot be modified. A fixed-size <see cref="T:System.Collections.IDictionary" /> object does not allow the addition or removal of elements, but does allow the modification of existing elements. A variable-size <see cref="T:System.Collections.IDictionary" /> object allows the addition, removal, and modification of elements.</para><para>The foreach statement of the C# language (For Each in Visual Basic) requires the type of each element in the collection. Since each element of the <see cref="T:System.Collections.IDictionary" /> object is a key/value pair, the element type is not the type of the key or the type of the value. Instead, the element type is <see cref="T:System.Collections.DictionaryEntry" />. For example: </para><para>code reference: Dictionary#14</para><para>The foreach statement is a wrapper around the enumerator, which allows only reading from but not writing to the collection.</para></remarks><summary><attribution license="cc4" from="Microsoft" modified="false" /><para>Represents a nongeneric collection of key/value pairs.</para></summary></Docs><Members><Member MemberName="Add"><MemberSignature Language="ILASM" Value=".method public hidebysig virtual abstract void Add(object key, object value)" /><MemberSignature Language="C#" Value="public void Add (object key, object value);" /><MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance void Add(object key, object value) cil managed" /><MemberType>Method</MemberType><AssemblyInfo><AssemblyVersion>1.0.5000.0</AssemblyVersion><AssemblyVersion>2.0.0.0</AssemblyVersion><AssemblyVersion>4.0.0.0</AssemblyVersion></AssemblyInfo><ReturnValue><ReturnType>System.Void</ReturnType></ReturnValue><Parameters><Parameter Name="key" Type="System.Object" /><Parameter Name="value" Type="System.Object" /></Parameters><Docs><exception cref="T:System.ArgumentNullException"><para><paramref name="key" /> is <see langword="null" />.</para></exception><exception cref="T:System.ArgumentException"><para> An entry with the same key already exists in the current instance.</para></exception><exception cref="T:System.NotSupportedException"><para>The current instance is read-only or has a fixed size.</para></exception><remarks><attribution license="cc4" from="Microsoft" modified="false" /><para>You can also use the <see cref="P:System.Collections.IDictionary.Item(System.Object)" /> property to add new elements by setting the value of a key that does not exist in the dictionary (for example, myCollection["myNonexistentKey"] = myValue). However, if the specified key already exists in the dictionary, setting the <see cref="P:System.Collections.IDictionary.Item(System.Object)" /> property overwrites the old value. In contrast, the <see cref="M:System.Collections.IDictionary.Add(System.Object,System.Object)" /> method does not modify existing elements.</para><para>Implementations can vary in whether they allow the key to be null.</para></remarks><summary><attribution license="cc4" from="Microsoft" modified="false" /><para>Adds an element with the provided key and value to the <see cref="T:System.Collections.IDictionary" /> object.</para></summary><param name="key"><attribution license="cc4" from="Microsoft" modified="false" />The <see cref="T:System.Object" /> to use as the key of the element to add. </param><param name="value"><attribution license="cc4" from="Microsoft" modified="false" />The <see cref="T:System.Object" /> to use as the value of the element to add. </param></Docs><Excluded>0</Excluded></Member><Member MemberName="Clear"><MemberSignature Language="ILASM" Value=".method public hidebysig virtual abstract void Clear()" /><MemberSignature Language="C#" Value="public void Clear ();" /><MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance void Clear() cil managed" /><MemberType>Method</MemberType><AssemblyInfo><AssemblyVersion>1.0.5000.0</AssemblyVersion><AssemblyVersion>2.0.0.0</AssemblyVersion><AssemblyVersion>4.0.0.0</AssemblyVersion></AssemblyInfo><ReturnValue><ReturnType>System.Void</ReturnType></ReturnValue><Parameters /><Docs><remarks><para><block subset="none" type="behaviors">As described
      above.</block></para></remarks><exception cref="T:System.NotSupportedException"><para>The <see cref="T:System.Collections.IDictionary" /> is read-only. </para></exception><summary><attribution license="cc4" from="Microsoft" modified="false" /><para>Removes all elements from the <see cref="T:System.Collections.IDictionary" /> object.</para></summary></Docs><Excluded>0</Excluded></Member><Member MemberName="Contains"><MemberSignature Language="ILASM" Value=".method public hidebysig virtual abstract bool Contains(object key)" /><MemberSignature Language="C#" Value="public bool Contains (object key);" /><MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance bool Contains(object key) cil managed" /><MemberType>Method</MemberType><AssemblyInfo><AssemblyVersion>1.0.5000.0</AssemblyVersion><AssemblyVersion>2.0.0.0</AssemblyVersion><AssemblyVersion>4.0.0.0</AssemblyVersion></AssemblyInfo><ReturnValue><ReturnType>System.Boolean</ReturnType></ReturnValue><Parameters><Parameter Name="key" Type="System.Object" /></Parameters><Docs><exception cref="T:System.ArgumentNullException"><paramref name="key " />is <see langword="null" />.</exception><remarks><attribution license="cc4" from="Microsoft" modified="false" /><para>Implementations can vary in whether they allow the key to be null.</para><para>Starting with the .NET Framework 2.0, this method uses the collection’s objects’ <see cref="M:System.Object.Equals(System.Object)" /> and <see cref="M:System.IComparable.CompareTo(System.Object)" /> methods on <paramref name="item" /> to determine whether <paramref name="item" /> exists. In the earlier versions of the .NET Framework, this determination was made by using the <see cref="M:System.Object.Equals(System.Object)" /> and <see cref="M:System.IComparable.CompareTo(System.Object)" /> methods of the <paramref name="item" /> parameter on the objects in the collection.</para></remarks><summary><attribution license="cc4" from="Microsoft" modified="false" /><para>Determines whether the <see cref="T:System.Collections.IDictionary" /> object contains an element with the specified key.</para></summary><returns><attribution license="cc4" from="Microsoft" modified="false" /><para>true if the <see cref="T:System.Collections.IDictionary" /> contains an element with the key; otherwise, false.</para></returns><param name="key"><attribution license="cc4" from="Microsoft" modified="false" />The key to locate in the <see cref="T:System.Collections.IDictionary" /> object.</param></Docs><Excluded>0</Excluded></Member><Member MemberName="GetEnumerator"><MemberSignature Language="ILASM" Value=".method public hidebysig virtual abstract class System.Collections.IDictionaryEnumerator GetEnumerator()" /><MemberSignature Language="C#" Value="public System.Collections.IDictionaryEnumerator GetEnumerator ();" /><MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance class System.Collections.IDictionaryEnumerator GetEnumerator() cil managed" /><MemberType>Method</MemberType><AssemblyInfo><AssemblyVersion>1.0.5000.0</AssemblyVersion><AssemblyVersion>2.0.0.0</AssemblyVersion><AssemblyVersion>4.0.0.0</AssemblyVersion></AssemblyInfo><ReturnValue><ReturnType>System.Collections.IDictionaryEnumerator</ReturnType></ReturnValue><Parameters /><Docs><remarks><attribution license="cc4" from="Microsoft" modified="false" /><para>[Visual Basic, C#]</para><para>The foreach statement of the C# language (for each in Visual Basic) hides the complexity of the enumerators.  Therefore, using foreach is recommended instead of directly manipulating the enumerator.</para><para>Enumerators can be used to read the data in the collection, but they cannot be used to modify the underlying collection.</para><para>Initially, the enumerator is positioned before the first element in the collection. <see cref="M:System.Collections.IEnumerator.Reset" /> also brings the enumerator back to this position.  At this position, the <see cref="P:System.Collections.IEnumerator.Current" /> property is undefined. Therefore, you must call <see cref="M:System.Collections.IEnumerator.MoveNext" /> to advance the enumerator to the first element of the collection before reading the value of <see cref="P:System.Collections.IEnumerator.Current" />.</para><para><see cref="P:System.Collections.IEnumerator.Current" /> returns the same object until either <see cref="M:System.Collections.IEnumerator.MoveNext" /> or <see cref="M:System.Collections.IEnumerator.Reset" /> is called. <see cref="M:System.Collections.IEnumerator.MoveNext" /> sets <see cref="P:System.Collections.IEnumerator.Current" /> to the next element.</para><para>If <see cref="M:System.Collections.IEnumerator.MoveNext" /> passes the end of the collection, the enumerator is positioned after the last element in the collection and <see cref="M:System.Collections.IEnumerator.MoveNext" /> returns false. When the enumerator is at this position, subsequent calls to <see cref="M:System.Collections.IEnumerator.MoveNext" /> also return false. If the last call to <see cref="M:System.Collections.IEnumerator.MoveNext" /> returned false, <see cref="P:System.Collections.IEnumerator.Current" /> is undefined. To set <see cref="P:System.Collections.IEnumerator.Current" /> to the first element of the collection again, you can call <see cref="M:System.Collections.IEnumerator.Reset" /> followed by <see cref="M:System.Collections.IEnumerator.MoveNext" />.</para><para>An enumerator remains valid as long as the collection remains unchanged. If changes are made to the collection, such as adding, modifying, or deleting elements, the enumerator is irrecoverably invalidated and its behavior is undefined.</para><para>The enumerator does not have exclusive access to the collection; therefore, enumerating through a collection is intrinsically not a thread-safe procedure.  To guarantee thread safety during enumeration, you can lock the collection during the entire enumeration.  To allow the collection to be accessed by multiple threads for reading and writing, you must implement your own synchronization.</para></remarks><summary><attribution license="cc4" from="Microsoft" modified="false" /><para>Returns an <see cref="T:System.Collections.IDictionaryEnumerator" /> object for the <see cref="T:System.Collections.IDictionary" /> object.</para></summary><returns><attribution license="cc4" from="Microsoft" modified="false" /><para>An <see cref="T:System.Collections.IDictionaryEnumerator" /> object for the <see cref="T:System.Collections.IDictionary" /> object.</para></returns></Docs><Excluded>0</Excluded></Member><Member MemberName="IsFixedSize"><MemberSignature Language="ILASM" Value=".property bool IsFixedSize { public hidebysig virtual abstract specialname bool get_IsFixedSize() }" /><MemberSignature Language="C#" Value="public bool IsFixedSize { get; }" /><MemberSignature Language="ILAsm" Value=".property instance bool IsFixedSize" /><MemberType>Property</MemberType><AssemblyInfo><AssemblyVersion>1.0.5000.0</AssemblyVersion><AssemblyVersion>2.0.0.0</AssemblyVersion><AssemblyVersion>4.0.0.0</AssemblyVersion></AssemblyInfo><ReturnValue><ReturnType>System.Boolean</ReturnType></ReturnValue><Parameters /><Docs><value><para><see langword="true" /> if the
   current instance has a fixed size;
   otherwise, <see langword="false" />. </para></value><remarks><attribution license="cc4" from="Microsoft" modified="false" /><para>A collection with a fixed size does not allow the addition or removal of elements after the collection is created, but does allow the modification of existing elements.</para><para>A collection with a fixed size is simply a collection with a wrapper that prevents adding and removing elements; therefore, if changes are made to the underlying collection, including the addition or removal of elements, the fixed-size collection reflects those changes.</para></remarks><summary><attribution license="cc4" from="Microsoft" modified="false" /><para>Gets a value indicating whether the <see cref="T:System.Collections.IDictionary" /> object has a fixed size.</para></summary></Docs><Excluded>0</Excluded></Member><Member MemberName="IsReadOnly"><MemberSignature Language="ILASM" Value=".property bool IsReadOnly { public hidebysig virtual abstract specialname bool get_IsReadOnly() }" /><MemberSignature Language="C#" Value="public bool IsReadOnly { get; }" /><MemberSignature Language="ILAsm" Value=".property instance bool IsReadOnly" /><MemberType>Property</MemberType><AssemblyInfo><AssemblyVersion>1.0.5000.0</AssemblyVersion><AssemblyVersion>2.0.0.0</AssemblyVersion><AssemblyVersion>4.0.0.0</AssemblyVersion></AssemblyInfo><ReturnValue><ReturnType>System.Boolean</ReturnType></ReturnValue><Parameters /><Docs><value><para><see langword="true" /> if the
   current instance is read-only; otherwise,
<see langword="false" />.</para></value><remarks><attribution license="cc4" from="Microsoft" modified="false" /><para>A collection that is read-only does not allow the addition, removal, or modification of elements after the collection is created.</para></remarks><summary><attribution license="cc4" from="Microsoft" modified="false" /><para>Gets a value indicating whether the <see cref="T:System.Collections.IDictionary" /> object is read-only.</para></summary></Docs><Excluded>0</Excluded></Member><Member MemberName="Item"><MemberSignature Language="ILASM" Value=".property object Item[object key] { public hidebysig virtual abstract specialname object get_Item(object key) public hidebysig virtual abstract specialname void set_Item(object key, object value) }" /><MemberSignature Language="C#" Value="public object this[object key] { get; set; }" /><MemberSignature Language="ILAsm" Value=".property instance object Item(object)" /><MemberType>Property</MemberType><AssemblyInfo><AssemblyVersion>1.0.5000.0</AssemblyVersion><AssemblyVersion>2.0.0.0</AssemblyVersion><AssemblyVersion>4.0.0.0</AssemblyVersion></AssemblyInfo><ReturnValue><ReturnType>System.Object</ReturnType></ReturnValue><Parameters><Parameter Name="key" Type="System.Object" /></Parameters><Docs><param name="key">The key of the element to get or set.</param><summary><para> Gets or sets the element in the current instance that is associated with the specified key.</para></summary><value><para>The element with the specified key.</para></value><remarks><para><block subset="none" type="note">This property provides the ability to
      access a specific element in the collection by using the following syntax: <c>myCollection[index]</c>.</block></para><block subset="none" type="behaviors"><para>When setting this property, if the specified key already 
         exists in the current instance, the value is required to be replaced; otherwise,
         a new element is required to be created.</para></block></remarks><exception cref="T:System.ArgumentNullException"><para><paramref name="key" /> is <see langword="null" />.</para></exception><exception cref="T:System.NotSupportedException"><para>The property is set and the current instance is read-only.</para><para>The property is set, <paramref name="key" /> does not exist in the collection, and the current instance has a fixed size.</para></exception></Docs><Excluded>0</Excluded></Member><Member MemberName="Keys"><MemberSignature Language="ILASM" Value=".property class System.Collections.ICollection Keys { public hidebysig virtual abstract specialname class System.Collections.ICollection get_Keys() }" /><MemberSignature Language="C#" Value="public System.Collections.ICollection Keys { get; }" /><MemberSignature Language="ILAsm" Value=".property instance class System.Collections.ICollection Keys" /><MemberType>Property</MemberType><AssemblyInfo><AssemblyVersion>1.0.5000.0</AssemblyVersion><AssemblyVersion>2.0.0.0</AssemblyVersion><AssemblyVersion>4.0.0.0</AssemblyVersion></AssemblyInfo><ReturnValue><ReturnType>System.Collections.ICollection</ReturnType></ReturnValue><Parameters /><Docs><value><para>A <see cref="T:System.Collections.ICollection" /> containing the keys of the current
   instance.</para></value><remarks><attribution license="cc4" from="Microsoft" modified="false" /><para>The order of the keys in the returned <see cref="T:System.Collections.ICollection" /> object is unspecified, but is guaranteed to be the same order as the corresponding values in the <see cref="T:System.Collections.ICollection" /> returned by the <see cref="P:System.Collections.IDictionary.Values" /> property.</para></remarks><summary><attribution license="cc4" from="Microsoft" modified="false" /><para>Gets an <see cref="T:System.Collections.ICollection" /> object containing the keys of the <see cref="T:System.Collections.IDictionary" /> object.</para></summary></Docs><Excluded>0</Excluded></Member><Member MemberName="Remove"><MemberSignature Language="ILASM" Value=".method public hidebysig virtual abstract void Remove(object key)" /><MemberSignature Language="C#" Value="public void Remove (object key);" /><MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance void Remove(object key) cil managed" /><MemberType>Method</MemberType><AssemblyInfo><AssemblyVersion>1.0.5000.0</AssemblyVersion><AssemblyVersion>2.0.0.0</AssemblyVersion><AssemblyVersion>4.0.0.0</AssemblyVersion></AssemblyInfo><ReturnValue><ReturnType>System.Void</ReturnType></ReturnValue><Parameters><Parameter Name="key" Type="System.Object" /></Parameters><Docs><exception cref="T:System.ArgumentNullException"><paramref name="key " /> is <see langword="null" />.</exception><exception cref="T:System.NotSupportedException"><para>The current instance is read-only or has a fixed size.</para></exception><remarks><attribution license="cc4" from="Microsoft" modified="false" /><para>If the <see cref="T:System.Collections.IDictionary" /> object does not contain an element with the specified key, the <see cref="T:System.Collections.IDictionary" /> remains unchanged. No exception is thrown.</para></remarks><summary><attribution license="cc4" from="Microsoft" modified="false" /><para>Removes the element with the specified key from the <see cref="T:System.Collections.IDictionary" /> object.</para></summary><param name="key"><attribution license="cc4" from="Microsoft" modified="false" />The key of the element to remove. </param></Docs><Excluded>0</Excluded></Member><Member MemberName="Values"><MemberSignature Language="ILASM" Value=".property class System.Collections.ICollection Values { public hidebysig virtual abstract specialname class System.Collections.ICollection get_Values() }" /><MemberSignature Language="C#" Value="public System.Collections.ICollection Values { get; }" /><MemberSignature Language="ILAsm" Value=".property instance class System.Collections.ICollection Values" /><MemberType>Property</MemberType><AssemblyInfo><AssemblyVersion>1.0.5000.0</AssemblyVersion><AssemblyVersion>2.0.0.0</AssemblyVersion><AssemblyVersion>4.0.0.0</AssemblyVersion></AssemblyInfo><ReturnValue><ReturnType>System.Collections.ICollection</ReturnType></ReturnValue><Parameters /><Docs><value><para>A <see cref="T:System.Collections.ICollection" /> containing the values in the current
   instance.</para></value><remarks><attribution license="cc4" from="Microsoft" modified="false" /><para>The order of the values in the returned <see cref="T:System.Collections.ICollection" /> object is unspecified, but is guaranteed to be the same order as the corresponding keys in the <see cref="T:System.Collections.ICollection" /> returned by the <see cref="P:System.Collections.IDictionary.Keys" /> property.</para></remarks><summary><attribution license="cc4" from="Microsoft" modified="false" /><para>Gets an <see cref="T:System.Collections.ICollection" /> object containing the values in the <see cref="T:System.Collections.IDictionary" /> object.</para></summary></Docs><Excluded>0</Excluded></Member></Members><TypeExcluded>0</TypeExcluded></Type>