版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、ASP net C 基本语法 B篇 程序结构、运算符第一章ASP.net C#基本语法(B篇程序结构、运算符、运算优先级)2011-02-08 19:21第一章ASP.net C#基本语法(B篇程序结构、运算符、运算优先级)在上一部分中我们做了一个简单的ASP.net的程序,但是简单中真的简约吗?VS2010的模板提供了那些东西呢?单位现在需要计算很多的数字。如何实现呢?豆豆做了一个计算公式。做的是惊天地泣鬼神啊!可是结果!算出来一个怪胎!这不郁闷着呢!本章目标:了解程序模板的结构,能够使用运算符,详细剖析和熟练掌握运算的优先级本章结构第一部分:项目结构先看图新建立的ASP.net怎么有这么多
2、东西?没有?你建立一个ASP.net项目,按Ctrl+Alt+L看看现在解读一下里面的项目VS2010里面模板带的页面比VS以前的版本要多很多,结构更加的清晰了。希望大家保持这种清晰的方式来做页面注意:没一个aspx都带一个aspx.cs,其中aspx页面实现前台的页面显示,也就是浏览器看到的内容。前台提交的处理由后台的aspx.cs进行处理,其处理过程浏览器是看不到的,这样很有效的提高的程序的安全性和逻辑性。第二部分:程序结构如下图:第三部分:运算符一、方括号()用于数组、索引器和属性,也可用于指针。1、数组类型是一种后跟的类型:int fib=new int100;/创建一个有100元素的
3、数组若要访问数组的一个元素,则用方括号括起所需元素的索引:fib0=fib1=1;for(int i=2;i 100;+i)fibi=fibi-1+fibi-2;/如果数组索引超出范围,则会引发异常。2、不能重载数组索引运算符;但类型可以定义采用一个或多个参数的索引器和属性。索引器参数括在方括号中(就像数组索引一样),但索引器参数可声明为任何类型(这与数组索引不同,数组索引必须为整数)。例如,.NET Framework定义Hashtable类型,该类型将键和任意类型的值关联在一起。Collections.Hashtable h=new Collections.Hashtable();ha=1
4、23;/note:using astring as the index 3、方括号还用于指定属性(C#编程指南):attribute(AllowMultiple=true)public class Attr 4、可以使用方括号来指定指针索引:unsafe fixed(int*p=fib)/p points to fib from earlier example p0=p1=1;for(int i=2;i 100;+i)pi=pi-1+pi-2;二、()除了用于指定表达式中的运算顺序外,圆括号还用于指定强制转换或类型转换:double x=1234.7;int a;a=(int)x;/cast
5、double to int三、.点运算符(.)用于成员访问。点运算符指定类型或命名空间的成员。例如,点运算符用于访问.NET Framework类库中的特定方法:System.Console.WriteLine(hello);四、:命名空间别名限定符运算符(:),用于查找标识符。它通常放置在两个标识符之间,例如:global:System.Console.WriteLine(Hello World);备注:命名空间别名限定符可以是global。这将调用全局命名空间中的查找,而不是在别名命名空间中。五、+运算符既可作为一元运算符也可作为二元运算符。备注:一元+运算符是为所有数值类型预定义的。对数
6、值类型进行一元+运算的结果就是操作数的值。为数值类型和字符串类型预定义了二元+运算符。对于数值类型,+计算两个操作数之和。当其中的一个操作数是字符串类型或两个操作数都是字符串类型时,+将操作数的字符串表示形式串联在一起。委托类型也提供二元+运算符,该运算符执行委托串联。using System;class MainClass static void Main()Console.WriteLine(+5);/unary plus Console.WriteLine(5+5);/addition Console.WriteLine(5+.5);/addition Console.WriteLine
7、(5+5);/string concatenation Console.WriteLine(5.0+5);/string concatenation/note automatic conversion from double to string六、-运算符既可作为一元运算符也可作为二元运算符。一元-运算符是为所有数值类型预定义的。数值类型的一元-运算的结果是操作数的反数。二元-运算符是为所有数值类型和枚举类型预定义的,其功能是从第一个操作数中减去第二个操作数。委托类型也提供二元-运算符,该运算符执行委托移除。using System;class MainClass static void Ma
8、in()int a=5;Console.WriteLine(-a);Console.WriteLine(a-1);Console.WriteLine(a-.5);七、*乘法运算符(*),用于计算操作数的积。另外还用作取消引用运算符,允许读取和写入指针。备注:所有数值类型都具有预定义的乘法运算符。*运算符还用来声明指针类型和取消引用指针。该运算符只能在不安全的上下文中使用,通过unsafe关键字的使用来表示,并且需要/unsafe编译器选项。取消引用运算符也称为间接寻址运算符。using System;class MainClass static void Main()Console.Write
9、Line(5*2);Console.WriteLine(-.5*.2);Console.WriteLine(-.5m*.2m);/decimal type八、/除法运算符(/)用第二个操作数除第一个操作数。所有数值类型都具有预定义的除法运算符。using System;class MainClass static void Main()Console.WriteLine(-5/2);Console.WriteLine(-5.0/2);九、%模数运算符(%)计算第二个操作数除第一个操作数后的余数。所有数值类型都具有预定义的模数运算符。using System;class MainClass st
10、atic void Main()Console.WriteLine(5%2);/int Console.WriteLine(-5%2);/int Console.WriteLine(5.0%2.2);/double Console.WriteLine(5.0m%2.2m);/decimal Console.WriteLine(-5.2%2.0);/double十、&运算符既可作为一元运算符也可作为二元运算符。备注:一元&运算符返回操作数的地址(要求unsafe上下文)。为整型和bool类型预定义了二进制&运算符。对于整型,&计算操作数的逻辑按位与。对于bool操作数,&计算操作数的逻辑与;也就
11、是说,当且仅当两个操作数均为true时,结果才为true。&运算符计算两个运算符,与第一个操作数的值无关。例如:int i=0;if(false&+i=1)十一、|二元|运算符是为整型和bool类型预定义的。对于整型,|计算操作数的按位或结果。对于bool操作数,|计算操作数的逻辑或结果;也就是说,当且仅当两个操作数均为false时,结果才为false。using System;class MainClass static void Main()Console.WriteLine(true|false);/logical or Console.WriteLine(false|false);/l
12、ogical or Console.WriteLine(0x0:x,0xf8|0x3f);/bitwise or十二、二元运算符是为整型和bool类型预定义的。对于整型,将计算操作数的按位异或。对于bool操作数,将计算操作数的逻辑异或;也就是说,当且仅当只有一个操作数为true时,结果才为true。using System;class MainClass static void Main()Console.WriteLine(truefalse);/logical exclusive-or Console.WriteLine(falsefalse);/logical exclusive-or
13、/Bitwise exclusive-or:Console.WriteLine(0x0:x,0xf80x3f);十三、!逻辑非运算符(!)是对操作数求反的一元运算符。为bool定义了该运算符,当且仅当操作数为false时才返回true。using System;class MainClass static void Main()Console.WriteLine(!true);Console.WriteLine(!false);十四、运算符对操作数执行按位求补运算,其效果相当于反转每一位。按位求补运算符是为int、uint、long和ulong类型预定义的。using System;class
14、 MainClass static void Main()int values=0,0x111,0xfffff,0x8888,0x 22000022;foreach(int vin values)Console.WriteLine(0x0:x8=0x1:x8,v,v);十五、=赋值运算符(=)将右操作数的值存储在左操作数表示的存储位置、属性或索引器中,并将值作为结果返回。操作数的类型必须相同(或右边的操作数必须可以隐式转换为左边操作数的类型)。using System;class MainClass static void Main()double x;int i;i=5;/int to in
15、t assignment x=i;/implicit conversion from int to double i=(int)x;/needs cast Console.WriteLine(i is0,x is1,i,x);object obj=i;Console.WriteLine(boxed value=0,type is1,obj,obj.GetType();i=(int)obj;Console.WriteLine(unboxed:0,i);十六、所有数值和枚举类型都定义小于关系运算符(),如果第一个操作数小于第二个操作数,该运算符返回true,否则返回false。using Syst
16、em;class MainClass static void Main()Console.WriteLine(1 1.1);Console.WriteLine(1.1 1.1);十七、所有数值类型和枚举类型都定义大于关系运算符,如果第一个操作数大于第二个操作数,它将返回true,否则返回false。using System;class MainClass static void Main()Console.WriteLine(1.1 1);Console.WriteLine(1.1 1.1);十八、?:条件运算符(?:)根据布尔型表达式的值返回两个值中的一个。条件运算符的格式如下conditi
17、on?first_expression:second_expression;备注:如果条件为true,则计算第一表达式并以它的计算结果为准;如果为false,则计算第二表达式并以它的计算结果为准。只计算两个表达式中的一个。使用条件运算符,可以更简洁、雅观地表达那些否则可能要求if-else结构的计算。例如,为在sin函数的计算中避免被零除,可编写为if(x!=0.0)s=Math.Sin(x)/x;else s=1.0;或使用条件运算符,s=x!=0.0?Math.Sin(x)/x:1.0;十九、+增量运算符(+)将操作数加1。增量运算符可以出现在操作数之前或之后:备注:第一种形式是前缀增量操
18、作。该操作的结果是操作数加1之后的值。第二种形式是后缀增量操作。该运算的结果是操作数增加之前的值。数值类型和枚举类型具有预定义的增量运算符。用户定义的类型可重载+运算符。在枚举时通常允许整型运算。/cs_operator_increment.cs using System;class MainClass static void Main()double x;x=1.5;Console.WriteLine(+x);x=1.5;Console.WriteLine(x+);Console.WriteLine(x);二十、-减量运算符(-)将操作数减1。减量运算符可以出现在操作数之前或之后:-vari
19、able和variable-。第一种形式是前缀减量操作。该运算的结果是操作数减小之后的值。第二种形式是后缀减量操作。该运算的结果是操作数减小之前的值。备注:数值类型和枚举类型具有预定义的增量运算符。用户定义的类型可重载-运算符(请参见运算符)。在枚举时通常允许整型运算。/cs_operator_decrement.cs using System;class MainClass static void Main()double x;x=1.5;Console.WriteLine(-x);x=1.5;Console.WriteLine(x-);Console.WriteLine(x);二十一、&条
20、件与运算符(&)执行其bool操作数的逻辑与运算,但仅在必要时才计算第二个操作数。备注:操作x&y对应于操作x&y不同的是,如果x为false,则不计算y(因为不论y为何值,与操作的结果都为false)。这被称作为短路计算。不能重载条件与运算符,但常规逻辑运算符和运算符true与false的重载,在某些限制条件下也被视为条件逻辑运算符的重载。示例在下面的示例中,请观察使用&的表达式只计算第一个操作数。using System;class MainClass static bool Method1()Console.WriteLine(Method1 called);return false;s
21、tatic bool Method2()Console.WriteLine(Method2 called);return true;static void Main()Console.WriteLine(regular AND:);Console.WriteLine(result is0,Method1()&Method2();Console.WriteLine(short-circuit AND:);Console.WriteLine(result is0,Method1()&Method2();二十二、|条件或运算符(|)执行bool操作数的逻辑或运算,但仅在必要时才计算第二个操作数。备注
22、:操作x|y对应于操作x|y不同的是,如果x为true,则不计算y(因为不论y为何值,或操作的结果都为true)。这被称作为短路计算。不能重载条件或运算符,但规则逻辑运算符和运算符true与false的重载,在某些限制条件下也被视为条件逻辑运算符的重载。示例在下面的示例中,请观察使用|的表达式只计算第一个操作数。using System;class MainClass static bool Method1()Console.WriteLine(Method1 called);return true;static bool Method2()Console.WriteLine(Method2
23、called);return false;static void Main()Console.WriteLine(regular OR:);Console.WriteLine(result is0,Method1()|Method2();Console.WriteLine(short-circuit OR:);Console.WriteLine(result is0,Method1()|Method2();二十三、左移运算符()将第一个操作数向左移动第二个操作数指定的位数。第二个操作数的类型必须是int。备注:如果第一个操作数是int或uint(32位数),则移位数由第二个操作数的低5位给出。
24、如果第一个操作数是long或ulong(64位数),则移位数由第二个操作数的低6位给出。第一个操作数的高序位被放弃,低序空位用0填充。移位操作从不导致溢出。用户定义的类型可重载运算符(请参见operator);第一个操作数的类型必须为用户定义的类型,第二个操作数的类型必须为int。重载二元运算符时,也会隐式重载相应的赋值运算符(如果有)。示例using System;class MainClass static void Main()int i=1;long lg=1;Console.WriteLine(0x0:x,i 1);Console.WriteLine(0x0:x,i 33);Cons
25、ole.WriteLine(0x0:x,lg 33);二十四、右移运算符()将第一个操作数向右移动第二个操作数所指定的位数。备注:如果第一个操作数为int或uint(32位数),则移位数由第二个操作数的低五位给出(第二个操作数&0x1f)。如果第一个操作数为long或ulong(64位数),则移位数由第二个操作数的低六位给出(第二个操作数&0x3f)。如果第一个操作数为int或long,则右移位是算术移位(高序空位设置为符号位)。如果第一个操作数为uint或ulong类型,则右移位是逻辑移位(高位填充0)。用户定义的类型可重载运算符;第一个操作数的类型必须为用户定义的类型,第二个操作数的类型必
26、须为int。有关更多信息,请参见operator。重载二元运算符时,也会隐式重载相应的赋值运算符(如果有)。示例using System;class MainClass static void Main()int i=-1000;Console.WriteLine(i 3);二十五、=对于预定义的值类型,如果操作数的值相等,则相等运算符(=)返回true,否则返回false。对于string以外的引用类型,如果两个操作数引用同一个对象,则=返回true。对于string类型,=比较字符串的值。备注:用户定义的值类型可重载=运算符(请参见operator)。用户定义的引用类型也可重载=运算符,尽
27、管在默认情况下,无论对于预定义的引用类型还是用户定义的引用类型,=的行为都与上面描述的相同。如果重载=,则还必须重载!=。在枚举时通常允许整型运算。示例using System;class MainClass static void Main()/Numeric equality:True Console.WriteLine(2+2)=4);/Reference equality:different objects,/same boxed value:False.object s=1;object t=1;Console.WriteLine(s=t);/Define some strings:
28、string a=hello;string b=String.Copy(a);string c=hello;/Compare string values of aconstant and an instance:True Console.WriteLine(a=b);/Compare string references;/a is aconstant but bis an instance:False.Console.WriteLine(object)a=(object)b);/Compare string references,both constants/have the same val
29、ue,so string interning/points to same reference:True.Console.WriteLine(object)a=(object)c);二十六、!=如果操作数相等,则不等运算符(!=)返回false,否则,返回true。为所有类型(包括字符串和对象)预定义了不等运算符。用户定义的类型可重载!=运算符。备注:对于预定义的值类型,如果操作数的值不同,则不等运算符(!=)返回true,否则,返回false。对于string以外的引用类型,如果两个操作数引用不同的对象,则!=返回true。对于string类型,!=比较字符串的值。用户定义的值类型可重载!=
30、运算符(请参见operator)。用户定义的引用类型也可重载!=运算符,尽管在默认情况下,无论对于预定义的引用类型还是用户定义的引用类型,!=的行为都与上面描述的相同。如果重载!=,则还必须重载=。在枚举时通常允许整型运算。示例using System;class MainClass static void Main()/Numeric inequality:Console.WriteLine(2+2)!=4);/Reference equality:two objects,same boxed value object s=1;object t=1;Console.WriteLine(s!=
31、t);/String equality:same string value,same string objects string a=hello;string b=hello;/compare string values Console.WriteLine(a!=b);/compare string references Console.WriteLine(object)a!=(object)b);二十七、=所有数值和枚举类型都定义了小于等于关系运算符(=),如果第一个操作数小于或等于第二个操作数,则该运算符将返回true,否则返回false。using System;class MainCl
32、ass static void Main()Console.WriteLine(1=1.1);Console.WriteLine(1.1=1.1);二十八、=所有数值类型和枚举类型都定义大于等于关系运算符=,如果第一个操作数大于或等于第二个操作数,该运算符将返回true,否则返回false。using System;class MainClass static void Main()Console.WriteLine(1.1=1);Console.WriteLine(1.1=1.1);二十九、+=加法赋值运算符。备注:使用+=赋值运算符的表达式,例如x+=y等效于x=x+y不同的是x只计算一次
33、。+运算符的含义取决于x和y的类型(例如,对于数值操作数,其含义为相加;对于字符串操作数,其含义为串联)。不能直接重载+=运算符,但用户定义的类型可以重载+运算符(请参见operator)。示例using System;class MainClass static void Main()int a=5;a+=6;Console.WriteLine(a);string s=Micro;s+=soft;Console.WriteLine(s);三十、-=减法赋值运算符。备注:使用-=赋值运算符的表达式,如x-=y等效于x=x-y不同的是x只计算一次。-运算符的含义取决于x和y的类型(例如,对于数值
34、操作数,其含义为相减;对于委托操作数,其含义为移除)。不能直接重载-=运算符,但用户定义的类型可重载-运算符(请参见operator)。示例using System;class MainClass static void Main()int a=5;a-=6;Console.WriteLine(a);三十一、*=二元乘法赋值运算符。备注:使用*=赋值运算符的表达式,如x*=y等效于x=x*y不同的是x只计算一次。为数值类型预定义了*运算符以执行乘法操作。不能直接重载*=运算符,但用户定义的类型可重载*运算符(请参见operator)。示例using System;class MainClass
35、 static void Main()int a=5;a*=6;Console.WriteLine(a);三十二、/=除法赋值运算符。备注:使用/=赋值运算符的表达式,如x/=y等效于x=x/y不同的是x只计算一次。为数值类型预定义了/运算符以执行除法操作。不能直接重载/=运算符,但用户定义的类型可重载/运算符(请参见operator)。对于所有复合赋值运算符,隐式重载二元运算符会重载等效的复合赋值。示例using System;class MainClass static void Main()int a=5;a/=6;Console.WriteLine(a);double b=5;b/=6
36、;Console.WriteLine(b);三十三、%=模块赋值运算符。备注:使用%=赋值运算符的表达式,如x%=y等效于x=x%y不同的是x只计算一次。为数值类型预定义了%运算符,以计算相除后的余数。不能直接重载%=运算符,但用户定义的类型可重载%运算符(请参见运算符(C#参考)。示例using System;class MainClass static void Main()int a=5;a%=3;Console.WriteLine(a);三十四、&=与赋值运算符。备注:使用&=赋值运算符的表达式,如x&=y等效于x=x&y不同的是x只计算一次。&运算符对整数操作数执行按位逻辑与运算,对
37、bool操作数执行逻辑与运算。不能直接重载&=运算符,但用户定义的类型可重载二元&运算符(请参见operator)。示例using System;class MainClass static void Main()int a=0x0c;a&=0x06;Console.WriteLine(0x0:x8,a);bool b=true;b&=false;Console.WriteLine(b);三十五、|=或赋值运算符。备注:使用|=赋值运算符的表达式,例如x|=y等效于x=x|y不同的是x只计算一次。|运算符对整型操作数执行按位逻辑或运算,对布尔操作数执行逻辑或运算。不能直接重载|=运算符,但用户
38、定义的类型可以重载|运算符(请参见operator)。示例using System;class MainClass static void Main()int a=0x0c;a|=0x06;Console.WriteLine(0x0:x8,a);bool b=true;b|=false;Console.WriteLine(b);三十六、=异或赋值运算符。备注:下列形式的表达式x=y按如下规则计算:x=xy不同的是x只计算一次。运算符对整数操作数执行按位异或运算,对bool操作数执行逻辑异或运算。不能直接重载=运算符,但用户定义的类型可重载!运算符(请参见operator)。示例using Sy
39、stem;class MainClass static void Main()int a=0x0c;a=0x06;Console.WriteLine(0x0:x8,a);bool b=true;b=false;Console.WriteLine(b);三十七、=左移赋值运算符。备注:下列形式的表达式x=y按如下规则计算:x=x y不同的是x只计算一次。运算符将x向左移动y指定的位数。不能直接重载=运算符,但用户定义的类型可重载运算符(请参见operator)。示例using System;class MainClass static void Main()int a=1000;a=4;Console.WriteLine(a);三十八、=右移赋值运算符。备注:下列形式的表达式x=y按如下规则计算:x=x y不同的是x只计算一次。运算符根据y指定的量对x进行右移位。不能直接重载=运算符,但用户定义的类型可重载运算符(请参见operator)。示例using System;class MainClas
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024-2025学年度刑法期末考试预测复习含答案详解(新)
- 2024-2025学年度一级建造师常考点试卷含答案详解【新】
- 2024-2025学年度一级建造师全真模拟模拟题附答案详解【达标题】
- 2024-2025学年度计算机四级题库(必刷)附答案详解
- 2024-2025学年医院三基考试全真模拟模拟题及参考答案详解(研优卷)
- 2024-2025学年度临床执业医师题库检测试题打印附参考答案详解【培优】
- 2025年天津省级机关公开遴选考试真题(附答案)
- 2026七年级道德与法治上册 学习计划制定
- 石材护理新技术介绍
- 2026九年级上新课标第二次工业革命
- 扁平化指挥调度系统解决方案
- 第16课+模块功能先划分+课件++2025-2026学年人教版初中信息科技八年级全一册
- 智能建筑专业介绍
- GB/T 17587.2-2025滚珠丝杠副第2部分:公称直径、公称导程、螺母尺寸和安装螺栓公制系列
- 2025年河南法院书记员招聘考试真题及答案
- 2026年劳动合同范本
- 租赁修井设备合同范本
- 哈罗德多马增长模型课件
- 儿童手功能训练
- 《中华中医药学会标准肿瘤中医诊疗指南》
- 江苏安全生产许可证办理流程
评论
0/150
提交评论