Значение аргумента метода изменяется после вызова метода

Возможно яЯ слишком устал, и яя галлюцинирую или, может быть, тамна самом деле что-то не так с C # + Mono !!

Я тестировал и отлаживал вJson.Net пока я сталкивалсяSetPropertyValue метод классаJsonSerializerInternalReader, Этот метод вызывает другой частный метод с именемCalculatePropertyDetails, Один из аргументов переданCalculatePropertyDetails называетсяreader типаJsonReader, Этот объект имеет значение, прежде чем он передаетсяCalculatePropertyDetails метод и этос нуля потом !!

Я знаю, это звучит так глупо, и поверь мне, яЯ не наивен, но что могло случиться, чтобы увидеть такое странное поведение? Может кто-нибудь придумать рациональное объяснение? Все, что я знаю, это то, что этот проект не является многопоточным, а результаты воспроизводимы.

Единственное доказательство того, что яу меня есть две записи в верхней части моего стека вызовов:

Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CalculatePropertyDetails (property={Id}, propertyConverter={JsonRpcTest.ObjectIdConverter}, containerContract={Newtonsoft.Json.Serialization.JsonObjectContract}, containerProperty=(null), reader=(null), target=(null), useExistingValue=false, currentValue=(null), propertyContract=(null), gottenCurrentValue=false) in Newtonsoft.Json/Serialization/JsonSerializerInternalReader.cs:792
Newtonsoft.Json.Serialization.JsonSerializerInternalReader.SetPropertyValue (property={Id}, propertyConverter={JsonRpcTest.ObjectIdConverter}, containerContract={Newtonsoft.Json.Serialization.JsonObjectContract}, containerProperty=(null), reader={Newtonsoft.Json.JsonTextReader}, target={JsonRpcTest.E}) in Newtonsoft.Json/Serialization/JsonSerializerInternalReader.cs:750

Ищуreader argument.I»

м с использованием Ubuntu 12.04, Mono 3.2.3 и Monodevelop 4.1.7 и проект разрабатывается с использованием.Mono / .Net 4.5

[ОБНОВИТЬ]

Вот'часть кода откудаSetPropertyValue определяется и гдеCalculatePropertyDetails называется:

private bool SetPropertyValue(JsonProperty property, JsonConverter propertyConverter, JsonContainerContract containerContract, JsonProperty containerProperty, JsonReader reader, object target)
{
    object currentValue;
    bool useExistingValue;
    JsonContract propertyContract;
    bool gottenCurrentValue;

    if (CalculatePropertyDetails(property, ref propertyConverter, containerContract, containerProperty, reader, target, out useExistingValue, out currentValue, out propertyContract, out gottenCurrentValue))
        return false;

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

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