Asp.net的条件和循环语句示例(If,Swich,While,For,Goto,foreach,Lock可直接运行)
来源:互联网 发布:linux自适应屏幕 编辑:程序博客网 时间:2024/04/27 11:54
#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
声明:其中有部分代码因为省事,摘自互联网!
- Asp.net的条件和循环语句示例(If,Swich,While,For,Goto,foreach,Lock可直接运行)
- if,continue,break,while,do-while, switch,return,foreach,for等条件语句的使用
- perl控制流介绍(if条件,while,for循环,foreach)
- 第三讲:c/c++循环语句for(),if(),swich(),do while(),
- 选择 | 循环 | 语句(if,if……else,switch,while,for)的理解和使用
- 循环语句:for;while;for while;foreach
- Swift笔记:For-In、While 循环、if条件语句
- while 语句与 if 语句 for循环语句的循环
- python if条件判断、for循环和while循环
- while 和 foreach 循环语句
- expect语法基础: while、for 循环、if 语句的用法示例
- If 条件控制 & while循环语句
- 使用if和goto语句构造循环
- 使用if和goto语句构造循环
- Python之if判断语句与while和for循环
- Java入门学习-学习if & else,for循环,foreach循环,while循环的用法。
- 流程控制陷阱(Switch语句,标签,if语句,for循环,foreach循环的循环计数器)
- if和switch语句、循环语句while和do……while、for
- 只利用SQL日期变量的非时间信息进行处理的方法例子
- JSP中文乱码
- 器普.net开发成功
- javascript中为何在匿名function函数后面还外加一个括号
- 打印给定位数的a,b 组合
- Asp.net的条件和循环语句示例(If,Swich,While,For,Goto,foreach,Lock可直接运行)
- Asp.net变量与类型和类型转换示例(较全且完整,能直接运行!!)
- 源码分析之PriorityQueue
- Java实现二叉树的多种遍历
- 不进则退!程序员如何保持优秀
- 优秀程序员的10种特质
- 程序员加油站,不是人人都懂的学习要点
- Android应用开发揭秘的第二个程序3_1_Android_Intent修改版和高仿版的源码注释
- 如何写好作文