2017-02-24 35 views
0

我生成六個數字,將它們添加到一個數組並將它們顯示在標籤中,在我嘗試對整數進行排序然後再次顯示它們之後,所有這些數字都返回值「0」C#Array使用Array.Sort()後爲空

int[] generatedNums = new int[6]; //Array containing generated integers 

protected void BtnGenerate_Click(object sender, EventArgs e) 
{ 

    Random newRandom = new Random(); 

    for (int i = 0; i < 5; i++) 
    { 
     generatedNums[i] = newRandom.Next(1, 50); 
    } 

    lblNum1.Text = generatedNums[0].ToString(); 
    lblNum2.Text = generatedNums[1].ToString(); 
    lblNum3.Text = generatedNums[2].ToString(); 
    lblNum4.Text = generatedNums[3].ToString(); 
    lblNum5.Text = generatedNums[4].ToString(); 
    lblNum6.Text = generatedNums[5].ToString(); 

} 

protected void BtnSort_Click(object sender, EventArgs e) 
{ 
    Array.Sort(generatedNums); 

    lblNum1.Text = generatedNums[0].ToString(); 
    lblNum2.Text = generatedNums[1].ToString(); 
    lblNum3.Text = generatedNums[2].ToString(); 
    lblNum4.Text = generatedNums[3].ToString(); 
    lblNum5.Text = generatedNums[4].ToString(); 
    lblNum6.Text = generatedNums[5].ToString(); 
} 

我將兩種方法合併爲一個,它工作正常,任何幫助?

+1

你可以在其中聲明'generatedNums'的地方顯示額外的代碼嗎? – hatchet

+0

[如何創建一個最小,完整,可驗證的例子](http://stackoverflow.com/help/mcve) – Dispersia

+1

如果你只運行第二種方法,那麼你的數組不會被數字填充,因此它們是全部爲零... – DavidG

回答

0

你只初始化值0 - 4

for (int i = 0; i < 5; i++) 

但你顯示0 - 5

lblNum1.Text = generatedNums[0].ToString(); 
lblNum2.Text = generatedNums[1].ToString(); 
lblNum3.Text = generatedNums[2].ToString(); 
lblNum4.Text = generatedNums[3].ToString(); 
lblNum5.Text = generatedNums[4].ToString(); 
lblNum6.Text = generatedNums[5].ToString(); 

它還將幫助,如果你表現出聲明generatedNums

2

你的問題是你忘記Web服務器不保存請求之間generatedNums陣列的狀態。 Web Forms與大多數Web框架一樣,是無狀態的。當您嘗試對數組進行排序時,您需要重新生成列表或將其從標籤中讀出。您的班級成員不會在請求之間持續存在。

+1

那麼如何在請求之間保持數組的值? –

0

啊這是一個Web服務器是一個非常重要的細節 ,你可以從清除這樣

private int[] generatedNums 
{ 
    get { return (int[])HttpContext.Current.Session["generatedNums"]; } 
    set { HttpContext.Current.Session["generatedNums"] = value; } 
} 
在構造函數或初始化

保持變量,你可以添加此

if (generatedNums == null) 
    generatedNums = new int[6]; 

或更好的是你可以在啓動服務器時設置它

+0

但請首先閱讀http://softwareengineering.stackexchange.com/questions/160947/should-session-variables-be-avigation。 – hatchet

+0

我完全同意使用hatchet use –

+0

好吧,我現在得到一個「System.NullReferenceException」時,將隨機數字分配給數組。我已閱讀 –