Asp.net的条件和循环语句示例(If,Swich,While,For,Goto,foreach,Lock可直接运行)


        #region =========================================================== \\ ★ 【判断语句】

            Response.Write(" <br>----------【判断语句】 ------------- <br>");

            // 条件运算符:  ?  :

            int isyesno=1;
            String yesno=isyesno==1?"是":"不是";
            Response.Write(yesno);
                  
        #endregion


        #region =========================================================== \\ ★ 【If 条件语句】


            Response.Write("<br>----------【If 条件语句】 ------------- <br>");

           //  if ()
           //  {}
           //  Else
           //  {}

            int i=3;
            if (i == 1)
            {
                Response.Write("I=1");
            }
            else if (i == 2)
            {
                Response.Write("I=2");
            }
            else
            {
                Response.Write("I=3");
            }

                  
        #endregion


        #region =========================================================== \\ ★ 【switch 条件语句】


                Response.Write("<br>----------【switch 条件语句】 ------------- <br>");

                // switch语句表达式的值必须为下列类型中的一种:sbyte、byte、short、ushort、int、uint、long、ulong、char、string
                // 量表达式后面是一个冒号,冒号后是语句列表。break则结束语句块。Default其他

                int ii = 1;
                switch (ii)
                {
                    case 1:
                        Response.Write("ii=1");
                        break;
                    case 2:
                        Response.Write("ii=2");
                        break;
                    default:
                        Response.Write("ii=3");
                        break;
                }

      #endregion


       #region =========================================================== \\ ★ 【while 循环语句 +1】


                Response.Write("<br>----------【while 循环语句】 ------------- <br>");

                // break 语句退出   continue 返回循环,相当于Loop , return 语句结束当前函数,返回上一级

                int v = 0;
                int s=0;
                while (v<100)
                {
                    v=v+1;
                    if (v == 5 || v == 45)
                    {
                        continue;
                    }
                    s = s+ v;
                    if (v==101)
                    { 
                        break;
                    }

                }
                Response.Write("1+.."+v.ToString()+"="+s.ToString());

      #endregion


          #region =========================================================== \\ ★ 【For 循环语句】


                Response.Write("<br>----------【For 循环语句】 ------------- <br>");

                //请注意,初始化、条件和循环都是可选的。如果忽略了条件,你就可以产生一个死循环,要用到跳转语句(break 或goto)才能退出。 
                int bb = 0;
                int b = 0;
                for (b = 0; b <= 100; b++) 
                {
                    if (b > 100)
                    {
                        break; // 由于某些原因 
                    }
                    bb = bb + b;
                }

                Response.Write("1+.." + b.ToString() + "=" + bb.ToString());

       #endregion

         #region =========================================================== \\ ★ 【foreach 循环语句】

             Response.Write("<br>----------【foreach 循环语句】 ------------- <br>");

             string[] m_name = new string[5] { "王", "安", "李", "和", "马" };
             foreach (string u in m_name)
             {
                 Response.Write(u+"<Br>");
             }
            
            //                Response.Write("1+.." + v.ToString() + "=" + s.ToString());

                #endregion


         #region =========================================================== \\ ★ 【Try 语句】

             Response.Write("<br>----------【Try 语句】 ------------- <br>");

             string f = "ok";
             int ff = 0;
             string c;
             int abc;
             try
             {
                 abc = int.Parse(Request.Form["abc"]); 
                 c = f + ff + 5;
                 Response.Write(c);
             }
             catch 
             {
                 Response.Write("类型Error");
             }
            //                Response.Write("1+.." + v.ToString() + "=" + s.ToString());

         #endregion

         #region =========================================================== \\ ★ 【lock 语句】

             Response.Write("<br>----------【lock 语句】 ------------- <br>");

/*
            static void Main() { 
                 A a = ...; 
                 lock(a) { 
                     a.P = a.P + 1; 
                 } 
             } 

             using statements 
              static void Main() { 
                 using (Resource r = new Resource()) { 
                     r.F(); 
                 } 
             }

                             Response.Write("1+.." + v.ToString() + "=" + s.ToString());

            asp.net为每一个http请求从HttpApplication池中取出一个HttpApplication来全程处理每个http请求,从Httpmodule管道到http handle处理.虽然asp.net是以多线程的方式处理请求,但因为每一个请求所对应的httpcontext都不相同,所以是为每一个页面请求实例化了一个该页面类的对象来处理http请求的.如果在asp.net页面中使用lock(this),或者lock(非静态实例成员),每个http请求间不会对lock间的代码进行同步访问,也就是说lock失效.根据上面的分析我们可以知道,既然asp.net 为每一个页面请求实例化一个对象,那么这些lock(this),或者lock(非静态实例成员)中的this,非静态实例成员都是不相同的,所以就无法实现锁的功能.  
               实验:  
             protected void Button1_Click(object sender, EventArgs e)  
                {  
                    lock (this)  
                    {  
                        for (int i = 0; i < 10; i++)  
                        {  
                            Thread.Sleep(1000);  
                            Response.Write(DateTime.Now.ToString());  
                        }  
                    }  
                }  
            同时打开多个页面,尽量同时点击button1,发现页面2的打印时间并不是在页面1的打印时间后,也就是说并不是页面1打印完后页面2才开始,也就是lock失效.  
            如果修改下,就可以实现不同用户http请求的同步访问了:  
            private static object o=new object()  
            protected void Button1_Click(object sender, EventArgs e)  
                {  
                    lock (o)  
                    {  
                        for (int i = 0; i < 10; i++)  
                        {  
                            Thread.Sleep(1000);  
                            Response.Write(DateTime.Now.ToString());  
                        }  
                    }  
                }  
            因为o是static的,那么在asp.net内也是共享的,生命期跟应用程序一样.  
            线程的sleep是不释放锁的,而wait是释放锁的.  
            一般说的多线程是一个请求中(如一个asp.net页面)有多个线程去处理该请求,而不是指asp.net机制是多线程运作的.lock是多线程处理技术中的其中一种. 

                        */

         #endregion


         #region =========================================================== \\ ★ 【Goto 语句】

             Response.Write("<br>----------【Goto 语句】 ------------- <br>");

                // 标记语句和 goto 语句 
             string args="";
                if (args.Length == 0) 
                {
                    goto done;
                }
                    Response.Write(args);
                done:
                    Response.Write("这是空的!");


                    int si = 0;
                    while (si < 6)
                    {
                        Response.Write("<Br>当前si值为" + si.ToString().Trim() + "<br>");
                        if (si == 3)
                            goto Complete; //假如i等于5,就跳到Complete标记处直接结束while语句;
                        si++;
                    }
                    Response.Write("<br>全部循环完!");
                Complete:
                    Response.Write("<br>程序直接跳到这里结束!");
         #endregion
声明:其中有部分代码因为省事,摘自互联网!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值