The Labs \ Source Viewer \ SSCLI \ System.Collections.Specialized \ StringCollection

  1. //------------------------------------------------------------------------------
  2. // <copyright file="StringCollection.cs" company="Microsoft">
  3. //
  4. // Copyright (c) 2006 Microsoft Corporation. All rights reserved.
  5. //
  6. // The use and distribution terms for this software are contained in the file
  7. // named license.txt, which can be found in the root of this distribution.
  8. // By using this software in any fashion, you are agreeing to be bound by the
  9. // terms of this license.
  10. //
  11. // You must not remove this notice, or any other, from this software.
  12. //
  13. // </copyright>
  14. //------------------------------------------------------------------------------
  15. namespace System.Collections.Specialized
  16. {
  17.    
  18.     using System.Diagnostics;
  19.     using System.Collections;
  20.    
  21.     /// <devdoc>
  22.     /// <para>Represents a collection of strings.</para>
  23.     /// </devdoc>
  24.     [Serializable()]
  25.     public class StringCollection : IList
  26.     {
  27.         private ArrayList data = new ArrayList();
  28.        
  29.         /// <devdoc>
  30.         /// <para>Represents the entry at the specified index of the <see cref='System.Collections.Specialized.StringCollection'/>.</para>
  31.         /// </devdoc>
  32.         public string this[int index]
  33.         {
  34.             get { return ((string)data[index]); }
  35.             set { data[index] = value; }
  36.         }
  37.        
  38.         /// <devdoc>
  39.         /// <para>Gets the number of strings in the
  40.         /// <see cref='System.Collections.Specialized.StringCollection'/> .</para>
  41.         /// </devdoc>
  42.         public int Count {
  43.             get { return data.Count; }
  44.         }
  45.        
  46.         bool IList.IsReadOnly {
  47.             get { return false; }
  48.         }
  49.        
  50.         bool IList.IsFixedSize {
  51.             get { return false; }
  52.         }
  53.        
  54.        
  55.         /// <devdoc>
  56.         /// <para>Adds a string with the specified value to the
  57.         /// <see cref='System.Collections.Specialized.StringCollection'/> .</para>
  58.         /// </devdoc>
  59.         public int Add(string value)
  60.         {
  61.             return data.Add(value);
  62.         }
  63.        
  64.         /// <devdoc>
  65.         /// <para>Copies the elements of a string array to the end of the <see cref='System.Collections.Specialized.StringCollection'/>.</para>
  66.         /// </devdoc>
  67.         public void AddRange(string[] value)
  68.         {
  69.             if (value == null) {
  70.                 throw new ArgumentNullException("value");
  71.             }
  72.             data.AddRange(value);
  73.         }
  74.        
  75.         /// <devdoc>
  76.         /// <para>Removes all the strings from the
  77.         /// <see cref='System.Collections.Specialized.StringCollection'/> .</para>
  78.         /// </devdoc>
  79.         public void Clear()
  80.         {
  81.             data.Clear();
  82.         }
  83.        
  84.         /// <devdoc>
  85.         /// <para>Gets a value indicating whether the
  86.         /// <see cref='System.Collections.Specialized.StringCollection'/> contains a string with the specified
  87.         /// value.</para>
  88.         /// </devdoc>
  89.         public bool Contains(string value)
  90.         {
  91.             return data.Contains(value);
  92.         }
  93.        
  94.         /// <devdoc>
  95.         /// <para>Copies the <see cref='System.Collections.Specialized.StringCollection'/> values to a one-dimensional <see cref='System.Array'/> instance at the
  96.         /// specified index.</para>
  97.         /// </devdoc>
  98.         public void CopyTo(string[] array, int index)
  99.         {
  100.             data.CopyTo(array, index);
  101.         }
  102.        
  103.         /// <devdoc>
  104.         /// <para>Returns an enumerator that can iterate through
  105.         /// the <see cref='System.Collections.Specialized.StringCollection'/> .</para>
  106.         /// </devdoc>
  107.         public StringEnumerator GetEnumerator()
  108.         {
  109.             return new StringEnumerator(this);
  110.         }
  111.        
  112.         /// <devdoc>
  113.         /// <para>Returns the index of the first occurrence of a string in
  114.         /// the <see cref='System.Collections.Specialized.StringCollection'/> .</para>
  115.         /// </devdoc>
  116.         public int IndexOf(string value)
  117.         {
  118.             return data.IndexOf(value);
  119.         }
  120.        
  121.         /// <devdoc>
  122.         /// <para>Inserts a string into the <see cref='System.Collections.Specialized.StringCollection'/> at the specified
  123.         /// index.</para>
  124.         /// </devdoc>
  125.         public void Insert(int index, string value)
  126.         {
  127.             data.Insert(index, value);
  128.         }
  129.        
  130.         /// <devdoc>
  131.         /// <para>Gets a value indicating whether the <see cref='System.Collections.Specialized.StringCollection'/> is read-only.</para>
  132.         /// </devdoc>
  133.         public bool IsReadOnly {
  134.             get { return false; }
  135.         }
  136.        
  137.         /// <devdoc>
  138.         /// <para>Gets a value indicating whether access to the
  139.         /// <see cref='System.Collections.Specialized.StringCollection'/>
  140.         /// is synchronized (thread-safe).</para>
  141.         /// </devdoc>
  142.         public bool IsSynchronized {
  143.             get { return false; }
  144.         }
  145.        
  146.         /// <devdoc>
  147.         /// <para> Removes a specific string from the
  148.         /// <see cref='System.Collections.Specialized.StringCollection'/> .</para>
  149.         /// </devdoc>
  150.         public void Remove(string value)
  151.         {
  152.             data.Remove(value);
  153.         }
  154.        
  155.         /// <devdoc>
  156.         /// <para>Removes the string at the specified index of the <see cref='System.Collections.Specialized.StringCollection'/>.</para>
  157.         /// </devdoc>
  158.         public void RemoveAt(int index)
  159.         {
  160.             data.RemoveAt(index);
  161.         }
  162.        
  163.         /// <devdoc>
  164.         /// <para>Gets an object that can be used to synchronize access to the <see cref='System.Collections.Specialized.StringCollection'/>.</para>
  165.         /// </devdoc>
  166.         public object SyncRoot {
  167.             get { return data.SyncRoot; }
  168.         }
  169.        
  170.         object IList.this[int index]
  171.         {
  172.             get { return this[index]; }
  173.             set { this[index] = (string)value; }
  174.         }
  175.        
  176.         int IList.Add(object value)
  177.         {
  178.             return Add((string)value);
  179.         }
  180.        
  181.         bool IList.Contains(object value)
  182.         {
  183.             return Contains((string)value);
  184.         }
  185.        
  186.        
  187.         int IList.IndexOf(object value)
  188.         {
  189.             return IndexOf((string)value);
  190.         }
  191.        
  192.         void IList.Insert(int index, object value)
  193.         {
  194.             Insert(index, (string)value);
  195.         }
  196.        
  197.         void IList.Remove(object value)
  198.         {
  199.             Remove((string)value);
  200.         }
  201.        
  202.         void ICollection.CopyTo(Array array, int index)
  203.         {
  204.             data.CopyTo(array, index);
  205.         }
  206.        
  207.         IEnumerator IEnumerable.GetEnumerator()
  208.         {
  209.             return data.GetEnumerator();
  210.         }
  211.     }
  212.    
  213.     /// <devdoc>
  214.     /// <para>[To be supplied.]</para>
  215.     /// </devdoc>
  216.     public class StringEnumerator
  217.     {
  218.         private System.Collections.IEnumerator baseEnumerator;
  219.         private System.Collections.IEnumerable temp;
  220.        
  221.         internal StringEnumerator(StringCollection mappings)
  222.         {
  223.             this.temp = (IEnumerable)(mappings);
  224.             this.baseEnumerator = temp.GetEnumerator();
  225.         }
  226.        
  227.         /// <devdoc>
  228.         /// <para>[To be supplied.]</para>
  229.         /// </devdoc>
  230.         public string Current {
  231.             get { return (string)(baseEnumerator.Current); }
  232.         }
  233.        
  234.         /// <devdoc>
  235.         /// <para>[To be supplied.]</para>
  236.         /// </devdoc>
  237.         public bool MoveNext()
  238.         {
  239.             return baseEnumerator.MoveNext();
  240.         }
  241.         /// <devdoc>
  242.         /// <para>[To be supplied.]</para>
  243.         /// </devdoc>
  244.         public void Reset()
  245.         {
  246.             baseEnumerator.Reset();
  247.         }
  248.        
  249.     }
  250. }

Developer Fusion