1

出于某种原因,我的数组summary和出现错误。有人知道发生了什么吗?subjectdateuse of unassigned local variable

    int count = 0;
    string[] summary;
    string[] subject;
    string[] date;

    foreach (SyndicationItem item in feed.Items)
    {
        subject[count] = item.Title.Text;
        date[count] = item.PublishDate.DateTime.ToString();

        summary[count] = item.Summary.Text;
        list.InnerHtml += "<a href=\"#\" onclick\"showArticle(" + count + ");\"><li id=\"post" + count + "\"><b>" + subject[count] + "</b><br>" +
           "<p id=\"posted-date\">Posted on: " + date[count] + "</p>" + "</li></a>";
        count++; 
    } 
4

5 回答 5

7

您需要将数组初始化为特定大小,例如:

string[] summary = new string[feed.Items.Count()];

或者,List<String>如果您不知道或不关心数组的长度,您可以使用 a 代替数组。在您的情况下,列表实际上更可取,因为扩展方法将在您的循环之前Count()不必要地枚举。feed.Items

于 2013-05-17T14:14:15.470 回答
2

您永远不会为数组分配值,即使您从未创建过数组,也只能通过其索引器访问数组。你可以像这样初始化它们:

string[] summary = new string[feed.Items.Count];
string[] subject = new string[feed.Items.Count];
string[] date = new string[feed.Items.Count];
于 2013-05-17T14:12:28.077 回答
2

它们没有被初始化。您应该完成如下声明:

string[] summary = new string[feed.Items.Count];
string[] subject = new string[feed.Items.Count];
string[] date = new string[feed.Items.Count];
于 2013-05-17T14:14:18.250 回答
2

您需要先初始化数组,然后才能使用它们,如下所示:

string[] summary = new string[length];

但是,在这种情况下,您事先不知道长度,因为feed.ItemsIEnumerable<SyndicationItem>,所以您无法直接获取项目数(您可以使用.Count(),但它会使您多次枚举集合,通常不建议这样做)。

更好的方法是使用列表而不是数组:

List<string> summary = new List<string>();

...

summary.Add(item.Summary.Text)

...
于 2013-05-17T14:21:22.783 回答
0

以前的答案已正确确定您需要使用数组的大小来初始化数组变量。要考虑为什么这是必要的,请意识到在foreach循环开始时程序不知道这些数组将占用多少内存。不可能说内存summary[count]将指向哪里!

于 2013-05-17T14:53:22.550 回答