已有57人关注
商城系统中一段验证码的代码有些不解
发表在C#图书答疑 2009-01-07
是否精华
版块置顶:
在c#项目开发实例自学手册中一书中,有一个商城系统的项目,里面关于生成验证码的地方有一些不解,,不解的地方我在该代码后有注释,谢谢,代码如下:
  /// <summary>
    /// 验证码
    /// </summary>
    /// <param name="n">验证码个数</param>
    /// <returns></returns>
    public string RandomNum(int n)
    {
        string strchar = "1,2,3,4,5,6,7,8,9,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z";
        string[] VcArray = strchar.Split(',');
        string VNum = "";
        int temp = -1;  //此外为什么要等于-1,什么含义,换其他值行不行
        Random random = new Random();
        for (int i = 1; i < n + 1; i++)
        {
            if (temp != -1)
            {
                random = new Random(i * temp * unchecked((int)DateTime.Now.Ticks)); //这句算法如何实现生成验证码的
            }
            int t = random.Next(61);    //其中61的含义是什么,是否可以随便换个值
            if (temp != -1 && temp == t)  //这句话含义是什么,一直不明白变量temp做什么用的
            {
                return RandomNum(n);
            }
            temp = t;
            VNum += VcArray[t];
        }

        return VNum;
    }
分享到:
精彩评论 3
wuhaohao
学分:0 LV1
2009-01-07
沙发
[FIELDSET][LEGEND]引自:1楼[/LEGEND]
读者朋友:
    您好,问题回复具体如下:
    (1)temp是一个临时值,主要是记录上次的随机数值,这里主要是对它进行一下初始化。
    (2)这里主要是为了保证产生的相邻的随机数不同,temp记录的是上一个随机数值,关于unchecked和DateTime.Now.Ticks,书中有解释
回复:
  第一点:temp=-1  //temp是否可以是任一数,还是必须是正整数或负整数
  第二点:能否对这一算法详细的讲解一下,书上就一句话看得不太明白
再次感谢
首页上一页 1 下一页尾页 1 条记录 1/1页
手机同步功能介绍
友情提示:以下图书配套资源能够实现手机同步功能
明日微信公众号
明日之星 明日之星编程特训营
客服热线(每日9:00-17:00)
400 675 1066
mingrisoft@mingrisoft.com
吉林省明日科技有限公司Copyright ©2007-2022,mingrisoft.com, All Rights Reserved长春市北湖科技开发区盛北大街3333号长春北湖科技园项目一期A10号楼四、五层
吉ICP备10002740号-2吉公网安备22010202000132经营性网站备案信息 营业执照