1

何らかの理由で、私の配列summarysubjectおよびエラー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++; 
    } 
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[length];

ただし、この場合、feed.Itemsは であるため、事前に長さがわからないIEnumerable<SyndicationItem>ため、アイテムの数を直接取得することはできません ( を使用することもできますが.Count()、コレクションを数回列挙する必要があり、通常はお勧めできません)。 )。

より良いアプローチは、配列の代わりにリストを使用することです:

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

...

summary.Add(item.Summary.Text)

...
于 2013-05-17T14:21:22.783 に答える
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 に答える
0

以前の回答では、配列変数を配列のサイズで初期化する必要があることを正しく識別していました。なぜこれが必要なのかを考えると、foreachループの開始時には、プログラムはこれらの配列がどれだけのメモリを占有するかを認識していないことに注意してください。summary[count]メモリ内のどこを指しているのかを言うのは不可能です!

于 2013-05-17T14:53:22.550 に答える