[英]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.