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