0

我有下面的代码。

该行string content = twitterMsg.text;正在为 twitterMsg 创建错误“使用未分配的局部变量”。我似乎无法访问我收藏TwitterSearchResponse.results.text中的字段。DataContractJsonSerializer<TwitterMain>

TwitterSearchResponse.results是一个数组(一组对象属性),其中包含几个字符串字段,名称如textuser_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;
}
4

1 回答 1

2

我怀疑它实际上是在报告使用未分配的局部变量MessageLinks。你的使用twitterMsg看起来不错。

所以,最大的问题是:如果没有任何结果,你想返回什么?如果您很高兴返回 null,只需在声明时分配值MessageLinks

下一个问题:你真的只想返回MatchCollection你找到的最后一个吗?这就是当前的行为:您循环遍历所有变量,每次设置相同的局部变量(即替换先前的值),然后返回最后一个值。

最后一个问题:为什么你有一个驼峰式大小写的方法名称 ( returnMatches)、一个帕斯卡大小写的局部变量 ( MessageLinks)、一个帕斯卡大小写的参数名称 ( TwitterSearchResponse) 和一个驼峰式大小写的属性 ( text)?我认为这text是由于它以这种方式来自 JSON - 但否则遵循正常的 .NET 命名约定是一个好主意。

于 2010-06-30T18:52:31.757 回答