Доступ к свойствам DataContractJsonSerializer<T> через перефакторизованный цикл foreach

У меня есть код ниже.

Линия string content = twitterMsg.text; создает ошибку "Использование неназначенной локальной переменной" для twitterMsg. Я не могу получить доступ к своему TwitterSearchResponse.results.text поля в моем DataContractJsonSerializer<TwitterMain> коллекция.

TwitterSearchResponse.results является массивом (набором свойств объекта) с несколькими строковыми полями, прикрепленными с такими именами, как text а также user_info,

Может кто-нибудь помочь с этим??

Обновленный код ниже. Я до сих пор в замешательстве, почему я не могу перебирать свои TwitterSearchResponse.results правильно и назначить content = twitterMsg.text

Для чего это стоит, вот мой метод DataContractJsonSerializer:

String url = String.Format("http://search.twitter.com/search.json?q={0}&rpp=20", Server.UrlEncode(txtSearchFor.Text));


// parse the JSON data
using (MemoryStream ms = new MemoryStream(wc.DownloadData(url)))
{
    DataContractJsonSerializer jsonSerializer =
        new DataContractJsonSerializer(typeof(TwitterMain));
    TwitterSearchResponse = jsonSerializer.ReadObject(ms) as TwitterMain;  // read as JSON and map as TwitterOut
}

А вот оригинальный исходный код, где лежит проблема.

    public List<MatchCollection> returnMatches(DataContractJsonSerializer<TwitterMain> TwitterSearchResponse)
{
        List<MatchCollection> messageLinks = new List<MatchCollection>();

        foreach (TwitterResult twitterMsg in TwitterSearchResponse.results)
        {
            string content = twitterMsg.text;

            // capture internet protocol pre-fixed words from message
            string pattern = @"...";
            messageLinks.Add(Regex.Matches(content, pattern, RegexOptions.IgnoreCase));

            // capture @username twitter users from message
            string atUsernamePattern = @"@([a-zA-Z0-9-_]+)";
            MatchCollection PeopleMatches = Regex.Matches(content, atUsernamePattern, RegexOptions.IgnoreCase);
        }

        return messageLinks;
}

1 ответ

Решение

Я подозреваю, что это на самом деле сообщает об использовании неназначенной локальной переменной MessageLinks, Ваше использование twitterMsg выглядит хорошо.

Итак, большой вопрос: что вы хотите вернуть, если результатов нет? Если вы счастливы, возвращая ноль, просто присвойте значение при объявлении MessageLinks,

Следующий вопрос: вы действительно хотите вернуть только последний MatchCollection ты находишь? Вот каково текущее поведение: вы перебираете все переменные, каждый раз устанавливаете одну и ту же локальную переменную (т.е. заменяете предыдущее значение), а затем возвращаете это последнее значение.

Последний вопрос: любая причина, по которой вы получили название метода в верблюжьей клетке (returnMatches), локальная переменная в Паскале (MessageLinks), имя параметра в Паскале (TwitterSearchResponse) и собственность на верблюде text)? Я бы предположил, что text Это происходит из-за того, что это происходит из JSON, но в противном случае рекомендуется следовать обычным соглашениям об именах.NET.

Другие вопросы по тегам