Ver código fonte

Optimizing layouts of Contains.

Bart De Smet 8 anos atrás
pai
commit
d02c0b6f1f

+ 5 - 5
Rx.NET/Source/src/System.Reactive/Linq/Observable/Contains.cs

@@ -28,14 +28,14 @@ namespace System.Reactive.Linq.ObservableImpl
 
 
         private sealed class _ : Sink<bool>, IObserver<TSource>
         private sealed class _ : Sink<bool>, IObserver<TSource>
         {
         {
-            // CONSIDER: This sink has a parent reference that can be considered for removal.
-
-            private readonly Contains<TSource> _parent;
+            private readonly TSource _value;
+            private readonly IEqualityComparer<TSource> _comparer;
 
 
             public _(Contains<TSource> parent, IObserver<bool> observer, IDisposable cancel)
             public _(Contains<TSource> parent, IObserver<bool> observer, IDisposable cancel)
                 : base(observer, cancel)
                 : base(observer, cancel)
             {
             {
-                _parent = parent;
+                _value = parent._value;
+                _comparer = parent._comparer;
             }
             }
 
 
             public void OnNext(TSource value)
             public void OnNext(TSource value)
@@ -43,7 +43,7 @@ namespace System.Reactive.Linq.ObservableImpl
                 var res = false;
                 var res = false;
                 try
                 try
                 {
                 {
-                    res = _parent._comparer.Equals(value, _parent._value);
+                    res = _comparer.Equals(value, _value);
                 }
                 }
                 catch (Exception ex)
                 catch (Exception ex)
                 {
                 {