Author: jbevain
Date: 2007-11-08 09:02:11 -0500 (Thu, 08 Nov 2007)
New Revision: 89184

Modified:
   trunk/mcs/class/System.Core/System.Linq/ChangeLog
   trunk/mcs/class/System.Core/System.Linq/Enumerable.cs
Log:
2007-11-08  Jb Evain  <[EMAIL PROTECTED]>

        * Enumerable.cs: code cleanup.



Modified: trunk/mcs/class/System.Core/System.Linq/ChangeLog
===================================================================
--- trunk/mcs/class/System.Core/System.Linq/ChangeLog   2007-11-08 13:35:11 UTC 
(rev 89183)
+++ trunk/mcs/class/System.Core/System.Linq/ChangeLog   2007-11-08 14:02:11 UTC 
(rev 89184)
@@ -1,3 +1,7 @@
+2007-11-08  Jb Evain  <[EMAIL PROTECTED]>
+
+       * Enumerable.cs: code cleanup.
+
 2007-11-06  Jb Evain  <[EMAIL PROTECTED]>
 
        * Enumerable.cs: Fix what we return on Except. Fix #324031.

Modified: trunk/mcs/class/System.Core/System.Linq/Enumerable.cs
===================================================================
--- trunk/mcs/class/System.Core/System.Linq/Enumerable.cs       2007-11-08 
13:35:11 UTC (rev 89183)
+++ trunk/mcs/class/System.Core/System.Linq/Enumerable.cs       2007-11-08 
14:02:11 UTC (rev 89184)
@@ -464,10 +464,9 @@
 
                public static bool Contains<TSource> (this IEnumerable<TSource> 
source, TSource value)
                {
-                       if (source is ICollection<TSource>) {
-                               ICollection<TSource> collection = 
(ICollection<TSource>) source;
+                       ICollection<TSource> collection = source as 
ICollection<TSource>;
+                       if (collection != null)
                                return collection.Contains (value);
-                       }
 
                        return Contains<TSource> (source, value, null);
                }
@@ -481,7 +480,6 @@
                        if (comparer == null)
                                comparer = EqualityComparer<TSource>.Default;
 
-
                        foreach (TSource e in source) {
                                if (comparer.Equals (e, value))
                                        return true;
@@ -497,17 +495,16 @@
                        if (source == null)
                                throw new ArgumentNullException ();
 
-                       if (source is ICollection<TSource>)
-                               return ((ICollection<TSource>) source).Count;
-                       else {
-                               int counter = 0;
-                               foreach (TSource element in source)
-                                       counter++;
-                               return counter;
-                       }
+                       ICollection<TSource> collection = source as 
ICollection<TSource>;
+                       if (collection != null)
+                               return collection.Count;
+
+                       int counter = 0;
+                       foreach (TSource element in source)
+                               counter++;
+                       return counter;
                }
 
-
                public static int Count<TSource> (this IEnumerable<TSource> 
source, Func<TSource, bool> selector)
                {
                        if (source == null || selector == null)
@@ -529,7 +526,6 @@
                        return DefaultIfEmpty (source, default (TSource));
                }
 
-
                public static IEnumerable<TSource> DefaultIfEmpty<TSource> 
(this IEnumerable<TSource> source, TSource defaultValue)
                {
                        if (source == null)
@@ -562,7 +558,7 @@
                        if (comparer == null)
                                comparer = EqualityComparer<TSource>.Default;
 
-                       List<TSource> items = new List<TSource> ();
+                       List<TSource> items = new List<TSource> (); // TODO: 
use a HashSet here
                        foreach (TSource element in source) {
                                if (!Contains (items, element, comparer)) {
                                        items.Add (element);
@@ -581,17 +577,18 @@
                        if (index < 0)
                                throw new ArgumentOutOfRangeException ();
 
-                       if (source is IList<TSource>)
-                               return ((IList<TSource>) source) [index];
-                       else {
-                               int counter = 0;
-                               foreach (TSource element in source) {
-                                       if (counter == index)
-                                               return element;
-                                       counter++;
-                               }
-                               throw new ArgumentOutOfRangeException ();
+                       IList<TSource> list = source as IList<TSource>;
+                       if (list != null)
+                               return list [index];
+
+                       int counter = 0;
+                       foreach (TSource element in source) {
+                               if (counter == index)
+                                       return element;
+                               counter++;
                        }
+
+                       throw new ArgumentOutOfRangeException ();
                }
 
                #endregion
@@ -605,20 +602,18 @@
                        if (index < 0)
                                return default (TSource);
 
-                       if (source is IList<TSource>) {
-                               if (((IList<TSource>) source).Count >= index)
-                                       return default (TSource);
-                               else
-                                       return ((IList<TSource>) source) 
[index];
-                       } else {
-                               int counter = 0;
-                               foreach (TSource element in source) {
-                                       if (counter == index)
-                                               return element;
-                                       counter++;
-                               }
-                               return default (TSource);
+                       IList<TSource> list = source as IList<TSource>;
+                       if (list != null)
+                               return index < list.Count ? list [index] : 
default (TSource);
+
+                       int counter = 0;
+                       foreach (TSource element in source) {
+                               if (counter == index)
+                                       return element;
+                               counter++;
                        }
+
+                       return default (TSource);
                }
 
                #endregion

_______________________________________________
Mono-patches maillist  -  [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches

Reply via email to