C# 访问DataContractJsonSerializer<;T>;通过重新分解foreach循环的属性

C# 访问DataContractJsonSerializer<;T>;通过重新分解foreach循环的属性,c#,asp.net,.net,datacontractjsonserializer,C#,Asp.net,.net,Datacontractjsonserializer,我有下面的代码 行string content=twitterMsg.text正在为twitterMsg创建错误“使用未分配的局部变量”。我似乎无法访问我的DataContractJsonSerializer集合中的TwitterSearchResponse.results.text字段 TwitterSearchResponse.results是一个数组(一组对象属性),带有多个字符串字段,这些字段的名称包括text和user\u info 有人能帮忙吗 更新了下面的代码。我仍然非常困惑,为什

我有下面的代码

string content=twitterMsg.text正在为twitterMsg创建错误“使用未分配的局部变量”。我似乎无法访问我的
DataContractJsonSerializer
集合中的
TwitterSearchResponse.results.text
字段

TwitterSearchResponse.results
是一个数组(一组对象属性),带有多个字符串字段,这些字段的名称包括
text
user\u 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;
}
公共列表返回匹配项(DataContractJsonSerializer TwitterSearchResponse)
{
List messageLinks=new List();
foreach(TwitterSearchResponse.results中的TwitterResult twitterMsg)
{
字符串内容=twitterMsg.text;
//从消息中捕获internet协议预先固定的单词
字符串模式=@“…”;
Add(Regex.Matches(content、pattern、RegexOptions.IgnoreCase));
//从消息中捕获@username twitter用户
字符串模式=@“@([a-zA-Z0-9-]+)”;
MatchCollection PeopleMatches=Regex.Matches(content、atUserName模式、RegexOptions.IgnoreCase);
}
返回消息链接;
}
我怀疑它实际上报告了未分配的局部变量
MessageLinks
的使用情况。您对twitterMsg的使用看起来不错

所以,最大的问题是:如果没有任何结果,你希望返回什么?如果您很乐意返回null,只需在声明
MessageLinks
时分配该值即可

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


最后一个问题:为什么要使用驼峰式的方法名(
returnMatches
)、Pascal式的局部变量(
MessageLinks
)、Pascal式的参数名(
TwitterSearchResponse
)和驼峰式的属性(
text
)?我认为
text
是因为它来自JSON,但遵循正常的.NET命名约定是个好主意。

我删除了我的正则表达式
模式,因为它使我的行为异常(不允许我发布!),我似乎有自己的符号,几乎肯定没有什么用处。谢谢,我现在理解了这个问题,并将确保从现在起保持良好的格式!@Jon Skeet-事实上,我使用了
公共列表返回匹配项(DataContractJsonSerializer TwitterSearchResponse)
来获取所有匹配集合,但twitterMsg仍然无法访问其数据。@AlexW:请发布实际的代码-当然,如果必要,请省略模式。您当前发布的代码不会导致您发布的错误消息。好的,现在很好,我运行了调试器,它以某种方式清除了自身。