[英]C# Array is empty after using Array.Sort()
我正在生成六個數字,將它們添加到數組中並在標簽中顯示它們,然后嘗試對整數進行排序,然后再次顯示它們,它們全部返回值“ 0”
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();
}
我將兩種方法合而為一,效果很好,有幫助嗎?
您的問題是,您忘記了Web服務器不會在兩次請求之間保留generatedNums
數組的狀態。 像大多數Web框架一樣,Web窗體是無狀態的。 當您嘗試對數組進行排序時,您將需要重新生成列表或從標簽中讀取它。 您的班級成員不會在請求之間保持不變。
您僅初始化值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,這也將有所幫助
嗯,這是一個Web服務器,這是一個非常重要的細節,您可以像這樣避免清除變量
private int[] generatedNums
{
get { return (int[])HttpContext.Current.Session["generatedNums"]; }
set { HttpContext.Current.Session["generatedNums"] = value; }
}
在構造函數或初始值設定項中,您可以添加此
if (generatedNums == null)
generatedNums = new int[6];
或者更好的是,您可以在啟動服務器時進行設置
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.