فهرست منبع

ElementAtOrDefault

Daniel Weber 5 سال پیش
والد
کامیت
9fa3f4d645

+ 1 - 1
Rx.NET/Source/src/System.Reactive/Linq/IQueryLanguage.cs

@@ -51,7 +51,7 @@ namespace System.Reactive.Linq
         IObservable<int> Count<TSource>(IObservable<TSource> source);
         IObservable<int> Count<TSource>(IObservable<TSource> source, Func<TSource, bool> predicate);
         IObservable<TSource> ElementAt<TSource>(IObservable<TSource> source, int index);
-        IObservable<TSource> ElementAtOrDefault<TSource>(IObservable<TSource> source, int index);
+        IObservable<TSource?> ElementAtOrDefault<TSource>(IObservable<TSource> source, int index);
         IObservable<TSource> FirstAsync<TSource>(IObservable<TSource> source);
         IObservable<TSource> FirstAsync<TSource>(IObservable<TSource> source, Func<TSource, bool> predicate);
         IObservable<TSource?> FirstOrDefaultAsync<TSource>(IObservable<TSource> source);

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

@@ -755,7 +755,7 @@ namespace System.Reactive.Linq
         /// <returns>An observable sequence that produces the element at the specified position in the source sequence, or a default value if the index is outside the bounds of the source sequence.</returns>
         /// <exception cref="ArgumentNullException"><paramref name="source"/> is null.</exception>
         /// <exception cref="ArgumentOutOfRangeException"><paramref name="index"/> is less than zero.</exception>
-        public static IObservable<TSource> ElementAtOrDefault<TSource>(this IObservable<TSource> source, int index)
+        public static IObservable<TSource?> ElementAtOrDefault<TSource>(this IObservable<TSource> source, int index)
         {
             if (source == null)
             {

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

@@ -4,7 +4,7 @@
 
 namespace System.Reactive.Linq.ObservableImpl
 {
-    internal sealed class ElementAtOrDefault<TSource> : Producer<TSource, ElementAtOrDefault<TSource>._>
+    internal sealed class ElementAtOrDefault<TSource> : Producer<TSource?, ElementAtOrDefault<TSource>._>
     {
         private readonly IObservable<TSource> _source;
         private readonly int _index;
@@ -15,15 +15,15 @@ namespace System.Reactive.Linq.ObservableImpl
             _index = index;
         }
 
-        protected override _ CreateSink(IObserver<TSource> observer) => new _(_index, observer);
+        protected override _ CreateSink(IObserver<TSource?> observer) => new _(_index, observer);
 
         protected override void Run(_ sink) => sink.Run(_source);
 
-        internal sealed class _ : IdentitySink<TSource>
+        internal sealed class _ : Sink<TSource, TSource?>
         {
             private int _i;
 
-            public _(int index, IObserver<TSource> observer)
+            public _(int index, IObserver<TSource?> observer)
                 : base(observer)
             {
                 _i = index;
@@ -42,7 +42,7 @@ namespace System.Reactive.Linq.ObservableImpl
 
             public override void OnCompleted()
             {
-                ForwardOnNext(default!);
+                ForwardOnNext(default);
                 ForwardOnCompleted();
             }
         }

+ 1 - 1
Rx.NET/Source/src/System.Reactive/Linq/Qbservable.Generated.cs

@@ -4551,7 +4551,7 @@ namespace System.Reactive.Linq
         /// <paramref name="source" /> is null.</exception>
         /// <exception cref="ArgumentOutOfRangeException">
         /// <paramref name="index" /> is less than zero.</exception>
-        public static IQbservable<TSource> ElementAtOrDefault<TSource>(this IQbservable<TSource> source, int index)
+        public static IQbservable<TSource?> ElementAtOrDefault<TSource>(this IQbservable<TSource> source, int index)
         {
             if (source == null)
                 throw new ArgumentNullException(nameof(source));

+ 1 - 1
Rx.NET/Source/src/System.Reactive/Linq/QueryLanguage.Aggregates.cs

@@ -196,7 +196,7 @@ namespace System.Reactive.Linq
 
         #region + ElementAtOrDefault +
 
-        public virtual IObservable<TSource> ElementAtOrDefault<TSource>(IObservable<TSource> source, int index)
+        public virtual IObservable<TSource?> ElementAtOrDefault<TSource>(IObservable<TSource> source, int index)
         {
             return new ElementAtOrDefault<TSource>(source, index);
         }

+ 2 - 2
Rx.NET/Source/tests/Tests.System.Reactive.ApiApprovals/Api/ApiApprovalTests.Core.verified.cs

@@ -1017,7 +1017,7 @@ namespace System.Reactive.Linq
         public static System.IObservable<TSource> Do<TSource>(this System.IObservable<TSource> source, System.Action<TSource> onNext, System.Action<System.Exception> onError, System.Action onCompleted) { }
         public static System.IObservable<TSource> DoWhile<TSource>(this System.IObservable<TSource> source, System.Func<bool> condition) { }
         public static System.IObservable<TSource> ElementAt<TSource>(this System.IObservable<TSource> source, int index) { }
-        public static System.IObservable<TSource> ElementAtOrDefault<TSource>(this System.IObservable<TSource> source, int index) { }
+        public static System.IObservable<TSource?> ElementAtOrDefault<TSource>(this System.IObservable<TSource> source, int index) { }
         public static System.IObservable<TResult> Empty<TResult>() { }
         public static System.IObservable<TResult> Empty<TResult>(System.Reactive.Concurrency.IScheduler scheduler) { }
         public static System.IObservable<TResult> Empty<TResult>(TResult witness) { }
@@ -1926,7 +1926,7 @@ namespace System.Reactive.Linq
         public static System.Reactive.Linq.IQbservable<TSource> Do<TSource>(this System.Reactive.Linq.IQbservable<TSource> source, System.Linq.Expressions.Expression<System.Action<TSource>> onNext, System.Linq.Expressions.Expression<System.Action<System.Exception>> onError, System.Linq.Expressions.Expression<System.Action> onCompleted) { }
         public static System.Reactive.Linq.IQbservable<TSource> DoWhile<TSource>(this System.Reactive.Linq.IQbservable<TSource> source, System.Linq.Expressions.Expression<System.Func<bool>> condition) { }
         public static System.Reactive.Linq.IQbservable<TSource> ElementAt<TSource>(this System.Reactive.Linq.IQbservable<TSource> source, int index) { }
-        public static System.Reactive.Linq.IQbservable<TSource> ElementAtOrDefault<TSource>(this System.Reactive.Linq.IQbservable<TSource> source, int index) { }
+        public static System.Reactive.Linq.IQbservable<TSource?> ElementAtOrDefault<TSource>(this System.Reactive.Linq.IQbservable<TSource> source, int index) { }
         public static System.Reactive.Linq.IQbservable<TResult> Empty<TResult>(this System.Reactive.Linq.IQbservableProvider provider) { }
         public static System.Reactive.Linq.IQbservable<TResult> Empty<TResult>(this System.Reactive.Linq.IQbservableProvider provider, System.Reactive.Concurrency.IScheduler scheduler) { }
         public static System.Reactive.Linq.IQbservable<TResult> Empty<TResult>(this System.Reactive.Linq.IQbservableProvider provider, TResult witness) { }