dotnet/reactive · error · ArgumentNullException
fifteenth
Error message
fifteenth
What it means
The 16-argument QbservableEx.Zip throws ArgumentNullException because the parameter 'fifteenth' (the fifteenth source observable sequence) was null. All sequence arguments are validated up front before an expression tree is created via the IQbservableProvider.
Solutions
- Assign a real or empty observable to the fifteenth source before calling Zip
- Add null checks for all 16 arguments prior to the call
- Fix the factory/dependency that produced the null sequence
Example fix
// before var q = first.Zip(s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, s15, s16); // s15 null // after var s15 = GetFifteenth() ?? Observable.Empty<TFifteenth>(); var q = first.Zip(s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, s15, s16);
Defensive patterns
Strategy: validation
Validate before calling
if (fifteenth == null) throw new ArgumentException(nameof(fifteenth));
Type guard
static bool IsSource<T>(IObservable<T> s) => s != null;
Try / catch
try { var q = first.Zip(...); } catch (ArgumentNullException ex) { Console.Error.WriteLine($"Missing Zip source: {ex.ParamName}"); } Prevention
- Coalesce nullable stream factories with ?? Observable.Empty<TFifteenth>()
- Add unit tests that compose with all real sources so nulls surface early
- Avoid conditional assignment that can leave a stream variable null
When it happens
Trigger: Calling the 16-way Zip overload with the fifteenth argument (an IObservable<TFifteenth>) set to null.
Common situations: One of many merged streams comes from a nullable API result or an unresolved dependency in a reactive UI pipeline; copy-paste of the Zip call missed assigning one of the sources.
Related errors
- fourteenth
- sixteenth
- Value cannot be null. (Parameter 'fourteenth')
- source15
- throw new ArgumentNullException(nameof(first))
AI-assisted analysis of dotnet/reactive@94b5d5ab91 (2026-09-15).
Data as JSON: /api/errors/dfe574f953172816.
Report an issue: GitHub.
Appendix: source
Thrown at Rx.NET/Source/src/System.Reactive/Linq/QbservableEx.Homoicon.cs:2200
throw new ArgumentNullException(nameof(sixth));
if (seventh == null)
throw new ArgumentNullException(nameof(seventh));
if (eighth == null)
throw new ArgumentNullException(nameof(eighth));
if (ninth == null)
throw new ArgumentNullException(nameof(ninth));
if (tenth == null)
throw new ArgumentNullException(nameof(tenth));
if (eleventh == null)
throw new ArgumentNullException(nameof(eleventh));
if (twelfth == null)
throw new ArgumentNullException(nameof(twelfth));
if (thirteenth == null)
throw new ArgumentNullException(nameof(thirteenth));
if (fourteenth == null)
throw new ArgumentNullException(nameof(fourteenth));
if (fifteenth == null)
throw new ArgumentNullException(nameof(fifteenth));
if (sixteenth == null)
throw new ArgumentNullException(nameof(sixteenth));
return first.Provider.CreateQuery<(TFirst First, TSecond Second, TThird Third, TFourth Fourth, TFifth Fifth, TSixth Sixth, TSeventh Seventh, TEighth Eighth, TNinth Ninth, TTenth Tenth, TEleventh Eleventh, TTwelfth Twelfth, TThirteenth Thirteenth, TFourteenth Fourteenth, TFifteenth Fifteenth, TSixteenth Sixteenth)>(
Expression.Call(
null,
new Func<IQbservable<TFirst>, IObservable<TSecond>, IObservable<TThird>, IObservable<TFourth>, IObservable<TFifth>, IObservable<TSixth>, IObservable<TSeventh>, IObservable<TEighth>, IObservable<TNinth>, IObservable<TTenth>, IObservable<TEleventh>, IObservable<TTwelfth>, IObservable<TThirteenth>, IObservable<TFourteenth>, IObservable<TFifteenth>, IObservable<TSixteenth>, IQbservable<(TFirst First, TSecond Second, TThird Third, TFourth Fourth, TFifth Fifth, TSixth Sixth, TSeventh Seventh, TEighth Eighth, TNinth Ninth, TTenth Tenth, TEleventh Eleventh, TTwelfth Twelfth, TThirteenth Thirteenth, TFourteenth Fourteenth, TFifteenth Fifteenth, TSixteenth Sixteenth)>>(Zip<TFirst, TSecond, TThird, TFourth, TFifth, TSixth, TSeventh, TEighth, TNinth, TTenth, TEleventh, TTwelfth, TThirteenth, TFourteenth, TFifteenth, TSixteenth>).Method,
first.Expression,
GetSourceExpression(second),
GetSourceExpression(third),
GetSourceExpression(fourth),
GetSourceExpression(fifth),
GetSourceExpression(sixth),
GetSourceExpression(seventh),
GetSourceExpression(eighth),
GetSourceExpression(ninth),
GetSourceExpression(tenth),
GetSourceExpression(eleventh),View on GitHub (pinned to 94b5d5ab91)