Quellcode durchsuchen

Merge pull request #391 from Reactive-Extensions/UseCSharp7Patterns

Using C# 7 pattern matching features
Bart J.F. De Smet vor 8 Jahren
Ursprung
Commit
cabd3caa99

+ 1 - 2
Rx.NET/Source/src/System.Reactive/Concurrency/Scheduler.Services.cs

@@ -68,8 +68,7 @@ namespace System.Reactive.Concurrency
         private static T As<T>(IScheduler scheduler)
             where T : class
         {
-            var svc = scheduler as IServiceProvider;
-            if (svc != null)
+            if (scheduler is IServiceProvider svc)
             {
                 return (T)svc.GetService(typeof(T));
             }

+ 3 - 6
Rx.NET/Source/src/System.Reactive/Internal/Helpers.cs

@@ -10,12 +10,10 @@ namespace System.Reactive
     {
         public static int? GetLength<T>(IEnumerable<T> source)
         {
-            var array = source as T[];
-            if (array != null)
+            if (source is T[] array)
                 return array.Length;
 
-            var list = source as IList<T>;
-            if (list != null)
+            if (source is IList<T> list)
                 return list.Count;
 
             return null;
@@ -29,8 +27,7 @@ namespace System.Reactive
             {
                 hasOpt = false;
 
-                var eval = source as IEvaluatableObservable<T>;
-                if (eval != null)
+                if (source is IEvaluatableObservable<T> eval)
                 {
                     source = eval.Eval();
                     hasOpt = true;

+ 1 - 2
Rx.NET/Source/src/System.Reactive/Internal/SafeObserver.cs

@@ -16,8 +16,7 @@ namespace System.Reactive
 
         public static IObserver<TSource> Create(IObserver<TSource> observer, IDisposable disposable)
         {
-            var a = observer as AnonymousObserver<TSource>;
-            if (a != null)
+            if (observer is AnonymousObserver<TSource> a)
             {
                 return a.MakeSafe(disposable);
             }

+ 2 - 4
Rx.NET/Source/src/System.Reactive/Linq/Observable/Catch.cs

@@ -32,8 +32,7 @@ namespace System.Reactive.Linq.ObservableImpl
 
             protected override IEnumerable<IObservable<TSource>> Extract(IObservable<TSource> source)
             {
-                var @catch = source as Catch<TSource>;
-                if (@catch != null)
+                if (source is Catch<TSource> @catch)
                     return @catch._sources;
 
                 return null;
@@ -129,8 +128,7 @@ namespace System.Reactive.Linq.ObservableImpl
 
             public void OnError(Exception error)
             {
-                var e = error as TException;
-                if (e != null)
+                if (error is TException e)
                 {
                     var result = default(IObservable<TSource>);
                     try

+ 1 - 2
Rx.NET/Source/src/System.Reactive/Linq/Observable/OnErrorResumeNext.cs

@@ -31,8 +31,7 @@ namespace System.Reactive.Linq.ObservableImpl
 
             protected override IEnumerable<IObservable<TSource>> Extract(IObservable<TSource> source)
             {
-                var oern = source as OnErrorResumeNext<TSource>;
-                if (oern != null)
+                if (source is OnErrorResumeNext<TSource> oern)
                     return oern._sources;
 
                 return null;

+ 2 - 4
Rx.NET/Source/src/System.Reactive/Linq/Qbservable.cs

@@ -91,8 +91,7 @@ namespace System.Reactive.Linq
 
         internal static Expression GetSourceExpression<TSource>(IObservable<TSource> source)
         {
-            var q = source as IQbservable<TSource>;
-            if (q != null)
+            if (source is IQbservable<TSource> q)
                 return q.Expression;
 
             return Expression.Constant(source, typeof(IObservable<TSource>));
@@ -100,8 +99,7 @@ namespace System.Reactive.Linq
 
         internal static Expression GetSourceExpression<TSource>(IEnumerable<TSource> source)
         {
-            var q = source as IQueryable<TSource>;
-            if (q != null)
+            if (source is IQueryable<TSource> q)
                 return q.Expression;
 
             return Expression.Constant(source, typeof(IEnumerable<TSource>));

+ 2 - 4
Rx.NET/Source/src/System.Reactive/Linq/QbservableEx.cs

@@ -17,8 +17,7 @@ namespace System.Reactive.Linq
     {
         internal static Expression GetSourceExpression<TSource>(IObservable<TSource> source)
         {
-            var q = source as IQbservable<TSource>;
-            if (q != null)
+            if (source is IQbservable<TSource> q)
                 return q.Expression;
 
             return Expression.Constant(source, typeof(IObservable<TSource>));
@@ -26,8 +25,7 @@ namespace System.Reactive.Linq
 
         internal static Expression GetSourceExpression<TSource>(IEnumerable<TSource> source)
         {
-            var q = source as IQueryable<TSource>;
-            if (q != null)
+            if (source is IQueryable<TSource> q)
                 return q.Expression;
 
             return Expression.Constant(source, typeof(IEnumerable<TSource>));

+ 3 - 6
Rx.NET/Source/src/System.Reactive/Linq/QueryLanguage.Single.cs

@@ -16,8 +16,7 @@ namespace System.Reactive.Linq
 
         public virtual IObservable<TSource> AsObservable<TSource>(IObservable<TSource> source)
         {
-            var asObservable = source as AsObservable<TSource>;
-            if (asObservable != null)
+            if (source is AsObservable<TSource> asObservable)
                 return asObservable;
 
             return new AsObservable<TSource>(source);
@@ -48,8 +47,7 @@ namespace System.Reactive.Linq
 
         public virtual IObservable<TSource> Dematerialize<TSource>(IObservable<Notification<TSource>> source)
         {
-            var materialize = source as Materialize<TSource>;
-            if (materialize != null)
+            if (source is Materialize<TSource> materialize)
                 return materialize.Dematerialize();
 
             return new Dematerialize<TSource>(source);
@@ -133,8 +131,7 @@ namespace System.Reactive.Linq
 
         public virtual IObservable<TSource> IgnoreElements<TSource>(IObservable<TSource> source)
         {
-            var ignoreElements = source as IgnoreElements<TSource>;
-            if (ignoreElements != null)
+            if (source is IgnoreElements<TSource> ignoreElements)
                 return ignoreElements;
 
             return new IgnoreElements<TSource>(source);

+ 3 - 6
Rx.NET/Source/src/System.Reactive/Linq/QueryLanguage.StandardSequenceOperators.cs

@@ -344,8 +344,7 @@ namespace System.Reactive.Linq
 
         public virtual IObservable<TSource> Skip<TSource>(IObservable<TSource> source, int count)
         {
-            var skip = source as Skip<TSource>.Count;
-            if (skip != null)
+            if (source is Skip<TSource>.Count skip)
                 return skip.Combine(count);
 
             return new Skip<TSource>.Count(source, count);
@@ -387,8 +386,7 @@ namespace System.Reactive.Linq
 
         private static IObservable<TSource> Take_<TSource>(IObservable<TSource> source, int count)
         {
-            var take = source as Take<TSource>.Count;
-            if (take != null)
+            if (source is Take<TSource>.Count take)
                 return take.Combine(count);
 
             return new Take<TSource>.Count(source, count);
@@ -414,8 +412,7 @@ namespace System.Reactive.Linq
 
         public virtual IObservable<TSource> Where<TSource>(IObservable<TSource> source, Func<TSource, bool> predicate)
         {
-            var where = source as Where<TSource>.Predicate;
-            if (where != null)
+            if (source is Where<TSource>.Predicate where)
                 return where.Combine(predicate);
 
             return new Where<TSource>.Predicate(source, predicate);

+ 4 - 8
Rx.NET/Source/src/System.Reactive/Linq/QueryLanguage.Time.cs

@@ -251,8 +251,7 @@ namespace System.Reactive.Linq
 
         private static IObservable<TSource> Skip_<TSource>(IObservable<TSource> source, TimeSpan duration, IScheduler scheduler)
         {
-            var skip = source as Skip<TSource>.Time;
-            if (skip != null && skip._scheduler == scheduler)
+            if (source is Skip<TSource>.Time skip && skip._scheduler == scheduler)
                 return skip.Combine(duration);
 
             return new Skip<TSource>.Time(source, duration, scheduler);
@@ -293,8 +292,7 @@ namespace System.Reactive.Linq
 
         private static IObservable<TSource> SkipUntil_<TSource>(IObservable<TSource> source, DateTimeOffset startTime, IScheduler scheduler)
         {
-            var skipUntil = source as SkipUntil<TSource>;
-            if (skipUntil != null && skipUntil._scheduler == scheduler)
+            if (source is SkipUntil<TSource> skipUntil && skipUntil._scheduler == scheduler)
                 return skipUntil.Combine(startTime);
 
             return new SkipUntil<TSource>(source, startTime, scheduler);
@@ -316,8 +314,7 @@ namespace System.Reactive.Linq
 
         private static IObservable<TSource> Take_<TSource>(IObservable<TSource> source, TimeSpan duration, IScheduler scheduler)
         {
-            var take = source as Take<TSource>.Time;
-            if (take != null && take._scheduler == scheduler)
+            if (source is Take<TSource>.Time take && take._scheduler == scheduler)
                 return take.Combine(duration);
 
             return new Take<TSource>.Time(source, duration, scheduler);
@@ -378,8 +375,7 @@ namespace System.Reactive.Linq
 
         private static IObservable<TSource> TakeUntil_<TSource>(IObservable<TSource> source, DateTimeOffset endTime, IScheduler scheduler)
         {
-            var takeUntil = source as TakeUntil<TSource>;
-            if (takeUntil != null && takeUntil._scheduler == scheduler)
+            if (source is TakeUntil<TSource> takeUntil && takeUntil._scheduler == scheduler)
                 return takeUntil.Combine(endTime);
 
             return new TakeUntil<TSource>(source, endTime, scheduler);

+ 1 - 2
Rx.NET/Source/src/System.Reactive/Observable.Extensions.cs

@@ -321,8 +321,7 @@ namespace System
                 return source.Subscribe(observer);
             }
 
-            var producer = source as IProducer<T>;
-            if (producer != null)
+            if (source is IProducer<T> producer)
             {
                 return producer.SubscribeRaw(observer, enableSafeguard: false);
             }

+ 2 - 4
Rx.NET/Source/src/System.Reactive/ObservableQuery.cs

@@ -143,8 +143,7 @@ namespace System.Reactive
 
         public override string ToString()
         {
-            var c = _expression as ConstantExpression;
-            if (c != null && c.Value == this)
+            if (_expression is ConstantExpression c && c.Value == this)
             {
                 if (_source != null)
                     return _source.ToString();
@@ -159,8 +158,7 @@ namespace System.Reactive
         {
             protected override Expression VisitConstant(ConstantExpression/*!*/ node)
             {
-                var query = node.Value as ObservableQuery;
-                if (query != null)
+                if (node.Value is ObservableQuery query)
                 {
                     var source = query.Source;
                     if (source != null)

+ 3 - 6
Rx.NET/Source/src/System.Reactive/Subjects/Subject.cs

@@ -141,8 +141,7 @@ namespace System.Reactive.Subjects
                     return Disposable.Empty;
                 }
 
-                var done = oldObserver as DoneObserver<T>;
-                if (done != null)
+                if (oldObserver is DoneObserver<T> done)
                 {
                     observer.OnError(done.Exception);
                     return Disposable.Empty;
@@ -154,8 +153,7 @@ namespace System.Reactive.Subjects
                 }
                 else
                 {
-                    var obs = oldObserver as Observer<T>;
-                    if (obs != null)
+                    if (oldObserver is Observer<T> obs)
                     {
                         newObserver = obs.Add(observer);
                     }
@@ -203,8 +201,7 @@ namespace System.Reactive.Subjects
                 if (oldObserver == DisposedObserver<T>.Instance || oldObserver is DoneObserver<T>)
                     return;
 
-                var obs = oldObserver as Observer<T>;
-                if (obs != null)
+                if (oldObserver is Observer<T> obs)
                 {
                     newObserver = obs.Remove(observer);
                 }