将一些经典的ASP 3.0代码转换为C#语言和ASP.NET

时间:2014-10-11 10:14:50

标签: c# asp.net asp-classic

我需要使用ASP.NET将一些“经典ASP 3.0”代码转换为C#:

Randomize()
intUP  = 9
intLow =  1

intRange = intUp - intLow 
intRandom = CInt ((intRange * Rnd()) + intLow)

Response.Write(intRandom & "<br /><br />")

for i = 1 to (num) + intRandom
   Response.Write(intRandom & "<br />")
next

我尝试过这段代码:

int count;
Random rnd;

protected void Page_Load(object sender, EventArgs e)
{
    rnd = new Random();
    count = GetRandomInt(1, 9);

                for (int i = 0; i < count; i++)
                {
                   Response.Write(count.ToString());
                }
}


protected int GetRandomInt(int min, int max)
{
    return rnd.Next(min, max);
}

但在Classic ASP 3.0中,最大输出为9,但在C#和ASP.NET中,它要高得多。

我错过了什么?

这段代码出了什么问题?

提前谢谢。

1 个答案:

答案 0 :(得分:2)

实际上C#代码中的最大数字是较低的,但是你要背靠背地写这些数字,所以它们显示为一个大数而不是单独的数字。

Random.Next方法返回的数字至少与第一个参数一样高,并且低于第二个参数。拨打rnd.Next(1, 9)会给你1到8之间的数字。

你是从零开始循环,最多比随机数小一个。当您在循环中写入这些数字时,它们之间没有任何内容,最大值的输出将是:

01234567

原始代码会将其写为最大值:

9

1
2
3
4
5
6
7
8
9

要获得minmax之间的随机数,请在max中添加一个:

return rnd.Next(min, max + 1);

从一个而不是零循环,包括结束值,并在数字之间放置一些东西:

for (int i = 1; i <= count; i++)
{
  Response.Write(count.ToString() + "<br />");
}

注意:原始代码中的随机计算实际上是不正确的,因为它会生成最低和最高值的一半,与其他任何数字一样频繁。正确的实施将是:

intRange = intUp - intLow + 1
intRandom = Int((intRange * Rnd()) + intLow)

C#代码模仿正确的实现,而不是错误的实现。