Зачем мне нужен явный ToString () при использовании условного оператора?

у нас есть следующий код для составления простого значения данных формы SOAP Post:

     var postParameters = new Dictionary
        {
           { "someNumber", "100" },
           { "someString", "Hello World" }
        };

     var resultWhenNotInConditional = 
        postParameters
           .Keys
           .Zip(postParameters.Values, 
               (key, value) => string.Format("{0}={1}", key, value))
           .Aggregate(null,
              (prev, next) =>
              (prev != null)
                 ? string.Format("{0}&{1}", prev, next)
                 : next);

который работает как задумано, а именно

resultWhenNotInConditional = "someNumber=100&someString=Hello World"

Однако, когда я заключаю это в условный оператор, чтобы выполнить нулевую проверку, вот так:

     var resultWhenInConditional = 
        (postParameters != null)
        ? postParameters
           .Keys
           .Zip(postParameters.Values, 
                (key, value) => string.Format("{0}={1}", key, value))
           .Aggregate(null,
              (prev, next) =>
              (prev != null)
                 ? string.Format("{0}&{1}", prev, next)
                 : next)
        : string.Empty;

resultWhenInConditional кажется, всегда ноль, независимо от того,postParameters имеет значение NULL или действительныйDictionary, (Изменениеvar в явномstring также не имеет никакого эффекта).

Единственный способ исправить это, добавивToString() послеAggregateа именно:

     var resultWhenInConditional = 
       (postParameters != null)
        ? postParameters
           .Keys
           .Zip(postParameters.Values, 
                (key, value) => string.Format("{0}={1}", key, value))
           .Aggregate(null,
              (prev, next) =>
              (prev != null)
                 ? string.Format("{0}&{1}", prev, next)
                 : next)
           .ToString() // R# warns this is redundant
        : string.Empty;

Поэтому мой вопрос: зачем мне добавлять дополнительные.ToString() когда внутри условного оператора?

Microsoft Visual Studio Professional 2010 Версия 10.0.40219.1 SP1RelMicrosoft .NET Framework версия 4.0.30319 SP1Rel

редактировать

Спасибо за ответ!

Чтобы подтвердить, что это всего лишь заблуждение - VS IDE сообщает о переменной как NULL (при наведении мыши + Немедленное окно), но только при индивидуальной отладке модульных тестов с помощью средства запуска R # NUnit. При отладке под консолью приложение правильно сообщает значение в IDE.

то есть это происходит только при отладке в Resharper NUnit TestRunner.

Как только к переменной будет получен доступ с помощью дополнительного кода (например, /AssertConsole.Writeline и т. д.), ясно, что значение на самом деле не равно нулю.

мы добавиликонсольное приложение для GitHub искриншот здесь

Ни один из модульных тестов фактически не проходит, то есть значение isn 'на самом деле ноль :-)

R # 7.1.3 C # Edition (2224)NUnit 2.6.1.12217

Ответы на вопрос(1)

Ваш ответ на вопрос