由于某些原因,我的数组summary
,subject
和date
收到use 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++;
}
答案 0 :(得分:7)
您需要将数组初始化为特定大小,例如:
string[] summary = new string[feed.Items.Count()];
或者,如果您不了解或不关心数组的长度,则可以使用List<String>
而不是数组。在您的情况下,列表实际上更受欢迎,因为Count()
扩展方法会在循环之前不必要地枚举feed.Items
。
答案 1 :(得分:2)
您永远不会为数组赋值,您只能通过其索引器访问该数组,即使您从未创建过该数组。你可以这样初始化它们:
string[] summary = new string[feed.Items.Count];
string[] subject = new string[feed.Items.Count];
string[] date = new string[feed.Items.Count];
答案 2 :(得分:2)
它们不是初始化。您应该完成以下声明:
string[] summary = new string[feed.Items.Count];
string[] subject = new string[feed.Items.Count];
string[] date = new string[feed.Items.Count];
答案 3 :(得分:2)
您需要先初始化数组才能使用它们,如下所示:
string[] summary = new string[length];
但是,在这种情况下,您事先不知道长度,因为feed.Items
是IEnumerable<SyndicationItem>
,因此您无法直接获取项目数(您可以使用{{1}但是它会让你多次枚举这个集合,这通常是不推荐的。)
更好的方法是使用列表而不是数组:
.Count()
答案 4 :(得分:0)
以前的答案已经正确地确定您需要使用数组的大小初始化数组变量。要考虑为什么这是必要的,要意识到在foreach
循环开始时,程序不知道这些数组将占用多少内存。我不可能说内存summary[count]
指向哪里!