{"record":{"id":"9e7e21f83bc22d98","repo":"dotnet/reactive","slug":"value-cannot-be-null-parameter-fifth-qbservableex-homoicon","errorCode":null,"errorMessage":"Value cannot be null. (Parameter 'fifth')","messagePattern":"Value cannot be null\\. \\(Parameter 'fifth'\\)","errorType":"validation","errorClass":"ArgumentNullException","httpStatus":null,"severity":"error","filePath":"Rx.NET/Source/src/System.Reactive/Linq/QbservableEx.Homoicon.cs","lineNumber":415,"sourceCode":"        /// <param name=\"seventh\">Seventh observable source.</param>\n        /// <param name=\"eighth\">Eighth observable source.</param>\n        /// <param name=\"ninth\">Ninth observable source.</param>\n        /// <param name=\"tenth\">Tenth observable source.</param>\n        /// <returns>An observable sequence containing the result of combining elements of the sources using tuple values.</returns>\n        /// <exception cref=\"ArgumentNullException\">\n        /// <paramref name=\"first\" /> or <paramref name=\"second\" /> or <paramref name=\"third\" /> or <paramref name=\"fourth\" /> or <paramref name=\"fifth\" /> or <paramref name=\"sixth\" /> or <paramref name=\"seventh\" /> or <paramref name=\"eighth\" /> or <paramref name=\"ninth\" /> or <paramref name=\"tenth\" /> is null.</exception>\n        public static IQbservable<(TFirst First, TSecond Second, TThird Third, TFourth Fourth, TFifth Fifth, TSixth Sixth, TSeventh Seventh, TEighth Eighth, TNinth Ninth, TTenth Tenth)> CombineLatest<TFirst, TSecond, TThird, TFourth, TFifth, TSixth, TSeventh, TEighth, TNinth, TTenth>(this IQbservable<TFirst> first, IObservable<TSecond> second, IObservable<TThird> third, IObservable<TFourth> fourth, IObservable<TFifth> fifth, IObservable<TSixth> sixth, IObservable<TSeventh> seventh, IObservable<TEighth> eighth, IObservable<TNinth> ninth, IObservable<TTenth> tenth)\n        {\n            if (first == null)\n                throw new ArgumentNullException(nameof(first));\n            if (second == null)\n                throw new ArgumentNullException(nameof(second));\n            if (third == null)\n                throw new ArgumentNullException(nameof(third));\n            if (fourth == null)\n                throw new ArgumentNullException(nameof(fourth));\n            if (fifth == null)\n                throw new ArgumentNullException(nameof(fifth));\n            if (sixth == null)\n                throw new ArgumentNullException(nameof(sixth));\n            if (seventh == null)\n                throw new ArgumentNullException(nameof(seventh));\n            if (eighth == null)\n                throw new ArgumentNullException(nameof(eighth));\n            if (ninth == null)\n                throw new ArgumentNullException(nameof(ninth));\n            if (tenth == null)\n                throw new ArgumentNullException(nameof(tenth));\n\n            return first.Provider.CreateQuery<(TFirst First, TSecond Second, TThird Third, TFourth Fourth, TFifth Fifth, TSixth Sixth, TSeventh Seventh, TEighth Eighth, TNinth Ninth, TTenth Tenth)>(\n                Expression.Call(\n                    null,\n                    new Func<IQbservable<TFirst>, IObservable<TSecond>, IObservable<TThird>, IObservable<TFourth>, IObservable<TFifth>, IObservable<TSixth>, IObservable<TSeventh>, IObservable<TEighth>, IObservable<TNinth>, IObservable<TTenth>, IQbservable<(TFirst First, TSecond Second, TThird Third, TFourth Fourth, TFifth Fifth, TSixth Sixth, TSeventh Seventh, TEighth Eighth, TNinth Ninth, TTenth Tenth)>>(CombineLatest<TFirst, TSecond, TThird, TFourth, TFifth, TSixth, TSeventh, TEighth, TNinth, TTenth>).Method,\n                    first.Expression,\n                    GetSourceExpression(second),\n                    GetSourceExpression(third),","sourceCodeStart":397,"sourceCodeEnd":433,"githubUrl":"https://github.com/dotnet/reactive/blob/94b5d5ab912789f5abe9a72138a25bbd716fe59c/Rx.NET/Source/src/System.Reactive/Linq/QbservableEx.Homoicon.cs#L397-L433","documentation":"ArgumentNullException with message \"Value cannot be null. (Parameter 'fifth')\" is thrown by the 10-source CombineLatest overload when the fifth source sequence is null. The method's eager argument validation ensures all ten sources are non-null before building the Expression.Call tree for the IQbservableProvider, consistent with the documented exception contract on the method.","triggerScenarios":"Calling QbservableEx.CombineLatest with fifth == null; the guard at QbservableEx.Homoicon.cs:415-416 fires once sources one through four have passed validation.","commonSituations":"Combining UI or telemetry streams where one stream provider returned null; refactoring that changed a stream from an initialized Subject to a nullable field; passing null instead of an Empty sequence for an optional source.","solutions":["Provide a non-null IObservable<TFifth>; coalesce with Observable.Empty<TFifth>() if absence is expected.","Fix the stream factory or initialization logic so the fifth source is never null.","Use a 9-source CombineLatest overload to omit the fifth source instead of passing null."],"exampleFix":"// before\nvar combined = first.CombineLatest(second, third, fourth, fifth, sixth, seventh, eighth, ninth, tenth);\n// after\nvar combined = first.CombineLatest(second, third, fourth, fifth ?? Observable.Empty<TFifth>(), sixth, seventh, eighth, ninth, tenth);","handlingStrategy":"validation","validationCode":"if (fifth is null) throw new InvalidOperationException(\"fifth source must be a non-null IObservable<TFifth>\");\n// or: fifth ??= Observable.Empty<TFifth>();","typeGuard":"static bool IsValidSource<T>(IObservable<T>? source) => source is not null;","tryCatchPattern":"try\n{\n    var combined = first.CombineLatest(second, third, fourth, fifth, sixth, seventh, eighth, ninth, tenth);\n}\ncatch (ArgumentNullException ex) when (ex.ParamName == \"fifth\")\n{\n    // handle missing fifth source\n}","preventionTips":["Never represent 'no stream' as null; use Observable.Empty<T>() or Observable.Never<T>().","Validate all ten sources with a quick null check before composing.","Keep stream fields readonly and initialized in the constructor."],"tags":["argument-null","reactive-extensions","combinelatest","qbservable","validation"],"backgroundTag":"null-argument","analyzedSha":"94b5d5ab912789f5abe9a72138a25bbd716fe59c","analyzedAt":"2026-09-15T02:26:24.759Z","contentChangedAt":"2026-09-15T02:26:24.759Z","schemaVersion":2},"datasetVersion":"2026-09-15T23:17:13.987Z"}