ASPnetC基本语法B篇程序结构、运算符_第1页
ASPnetC基本语法B篇程序结构、运算符_第2页
ASPnetC基本语法B篇程序结构、运算符_第3页
ASPnetC基本语法B篇程序结构、运算符_第4页
ASPnetC基本语法B篇程序结构、运算符_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、.ASP net C 根本语法 B篇 程序结构、运算符第一章ASP.net C#根本语法B篇程序构造、运算符、运算优先级2020-02-08 19:21第一章ASP.net C#根本语法B篇程序构造、运算符、运算优先级在上一部分中我们做了一个简单的ASP.net的程序,但是简单中真的简约吗?VS2020的模板提供了那些东西呢?单位如今需要计算很多的数字。如何实现呢?豆豆做了一个计算公式。做的是"惊天地泣鬼神"啊!可是结果!算出来一个怪胎!这不郁闷着呢!本章目的:理解程序模板的构造,可以使用运算符,详细剖析和纯熟掌握运算的优先级本章构造第一部分:工程构造先看图新建立的ASP.

2、net怎么有这么多东西?没有?你建立一个ASP.net工程,按Ctrl+Alt+L看看如今解读一下里面的工程VS2020里面模板带的页面比VS以前的版本要多很多,构造更加的明晰了。希望大家保持这种明晰的方式来做页面注意:没一个aspx都带一个aspx.cs,其中aspx页面实现前台的页面显示,也就是阅读器看到的内容。前台提交的处理由后台的aspx.cs进展处理,其处理过程阅读器是看不到的,这样很有效的进步的程序的平安性和逻辑性。第二部分:程序构造如以以下图:第三部分:运算符一、方括号用于数组、索引器和属性,也可用于指针。1、数组类型是一种后跟的类型:int fib=new int100;/创立

3、一个有100元素的数组假设要访问数组的一个元素,那么用方括号括起所需元素的索引:fib0=fib1=1;forint i=2;i 100;+ifibi=fibi-1+fibi-2;/假设数组索引超出范围,那么会引发异常。2、不能重载数组索引运算符;但类型可以定义采用一个或多个参数的索引器和属性。索引器参数括在方括号中就像数组索引一样,但索引器参数可声明为任何类型这与数组索引不同,数组索引必须为整数。例如,.NET Framework定义Hashtable类型,该类型将键和任意类型的值关联在一起。Collections.Hashtable h=new Collections.Hashtable;

4、h"a"=123;/note:using astring as the index 3、方括号还用于指定属性C#编程指南:attributeAllowMultiple=truepublic class Attr 4、可以使用方括号来指定指针索引:unsafe fixedint*p=fib/p points to fib from earlier example p0=p1=1;forint i=2;i 100;+ipi=pi-1+pi-2;二、除了用于指定表达式中的运算顺序外,圆括号还用于指定强迫转换或类型转换:double x=1234.7;int a;a=intx;/c

5、ast double to int三、.点运算符.用于成员访问。点运算符指定类型或命名空间的成员。例如,点运算符用于访问.NET Framework类库中的特定方法:System.Console.WriteLine"hello";四、:命名空间别名限定符运算符:,用于查找标识符。它通常放置在两个标识符之间,例如:global:System.Console.WriteLine"Hello World";备注:命名空间别名限定符可以是global。这将调用全局命名空间中的查找,而不是在别名命名空间中。五、+运算符既可作为一元运算符也可作为二元运算符。备注:一

6、元+运算符是为所有数值类型预定义的。对数值类型进展一元+运算的结果就是操作数的值。为数值类型和字符串类型预定义了二元+运算符。对于数值类型,+计算两个操作数之和。当其中的一个操作数是字符串类型或两个操作数都是字符串类型时,+将操作数的字符串表示形式串联在一起。委托类型也提供二元+运算符,该运算符执行委托串联。using System;class MainClass static void MainConsole.WriteLine+5;/unary plus Console.WriteLine5+5;/addition Console.WriteLine5+.5;/addition Conso

7、le.WriteLine"5"+"5";/string concatenation Console.WriteLine5.0+"5";/string concatenation/note automatic conversion from double to string六、-运算符既可作为一元运算符也可作为二元运算符。一元-运算符是为所有数值类型预定义的。数值类型的一元-运算的结果是操作数的反数。二元-运算符是为所有数值类型和枚举类型预定义的,其功能是从第一个操作数中减去第二个操作数。委托类型也提供二元-运算符,该运算符执行委托移除

8、。using System;class MainClass static void Mainint a=5;Console.WriteLine-a;Console.WriteLinea-1;Console.WriteLinea-.5;七、*乘法运算符*,用于计算操作数的积。另外还用作取消引用运算符,允许读取和写入指针。备注:所有数值类型都具有预定义的乘法运算符。*运算符还用来声明指针类型和取消引用指针。该运算符只能在不平安的上下文中使用,通过unsafe关键字的使用来表示,并且需要/unsafe编译器选项。取消引用运算符也称为间接寻址运算符。using System;class MainCla

9、ss static void MainConsole.WriteLine5*2;Console.WriteLine-.5*.2;Console.WriteLine-.5m*.2m;/decimal type八、/除法运算符/用第二个操作数除第一个操作数。所有数值类型都具有预定义的除法运算符。using System;class MainClass static void MainConsole.WriteLine-5/2;Console.WriteLine-5.0/2;九、%模数运算符%计算第二个操作数除第一个操作数后的余数。所有数值类型都具有预定义的模数运算符。using System;cl

10、ass MainClass static void MainConsole.WriteLine5%2;/int Console.WriteLine-5%2;/int Console.WriteLine5.0%2.2;/double Console.WriteLine5.0m%2.2m;/decimal Console.WriteLine-5.2%2.0;/double十、&&运算符既可作为一元运算符也可作为二元运算符。备注:一元&运算符返回操作数的地址要求unsafe上下文。为整型和bool类型预定义了二进制&运算符。对于整型,&计算操作数的逻辑按位&q

11、uot;与"。对于bool操作数,&计算操作数的逻辑"与";也就是说,当且仅当两个操作数均为true时,结果才为true。&运算符计算两个运算符,与第一个操作数的值无关。例如:int i=0;iffalse&+i=1十一、|二元|运算符是为整型和bool类型预定义的。对于整型,|计算操作数的按位"或"结果。对于bool操作数,|计算操作数的逻辑"或"结果;也就是说,当且仅当两个操作数均为false时,结果才为false。using System;class MainClass static void

12、MainConsole.WriteLinetrue|false;/logical or Console.WriteLinefalse|false;/logical or Console.WriteLine"0x0:x",0xf8|0x3f;/bitwise or十二、二元运算符是为整型和bool类型预定义的。对于整型,将计算操作数的按位"异或"。对于bool操作数,将计算操作数的逻辑"异或";也就是说,当且仅当只有一个操作数为true时,结果才为true。using System;class MainClass static void

13、 MainConsole.WriteLinetruefalse;/logical exclusive-or Console.WriteLinefalsefalse;/logical exclusive-or/Bitwise exclusive-or:Console.WriteLine"0x0:x",0xf80x3f;十三、!逻辑非运算符!是对操作数求反的一元运算符。为bool定义了该运算符,当且仅当操作数为false时才返回true。using System;class MainClass static void MainConsole.WriteLine!true;Con

14、sole.WriteLine!false;十四、运算符对操作数执行按位求补运算,其效果相当于反转每一位。按位求补运算符是为int、uint、long和ulong类型预定义的。using System;class MainClass static void Mainint values=0,0x111,0xfffff,0x8888,0x 22000022;foreachint vin valuesConsole.WriteLine"0x0:x8=0x1:x8",v,v;十五、=赋值运算符=将右操作数的值存储在左操作数表示的存储位置、属性或索引器中,并将值作为结果返回。操作数的

15、类型必须一样或右边的操作数必须可以隐式转换为左边操作数的类型。using System;class MainClass static void Maindouble x;int i;i=5;/int to int assignment x=i;/implicit conversion from int to double i=intx;/needs cast Console.WriteLine"i is0,x is1",i,x;object obj=i;Console.WriteLine"boxed value=0,type is1",obj,obj.G

16、etType;i=intobj;Console.WriteLine"unboxed:0",i;十六、所有数值和枚举类型都定义"小于"关系运算符,假设第一个操作数小于第二个操作数,该运算符返回true,否那么返回false。using System;class MainClass static void MainConsole.WriteLine1 1.1;Console.WriteLine1.1 1.1;十七、所有数值类型和枚举类型都定义"大于"关系运算符,假设第一个操作数大于第二个操作数,它将返回true,否那么返回false。us

17、ing System;class MainClass static void MainConsole.WriteLine1.1 1;Console.WriteLine1.1 1.1;十八、?:条件运算符?:根据布尔型表达式的值返回两个值中的一个。条件运算符的格式如下condition?first_expression:second_expression;备注:假设条件为true,那么计算第一表达式并以它的计算结果为准;假设为false,那么计算第二表达式并以它的计算结果为准。只计算两个表达式中的一个。使用条件运算符,可以更简洁、雅观地表达那些否那么可能要求if-else构造的计算。例如,为在s

18、in函数的计算中防止被零除,可编写为ifx!=0.0s=Math.Sinx/x;else s=1.0;或使用条件运算符,s=x!=0.0?Math.Sinx/x:1.0;十九、+增量运算符+将操作数加1。增量运算符可以出如今操作数之前或之后:备注:第一种形式是前缀增量操作。该操作的结果是操作数加1之后的值。第二种形式是后缀增量操作。该运算的结果是操作数增加之前的值。数值类型和枚举类型具有预定义的增量运算符。用户定义的类型可重载+运算符。在枚举时通常允许整型运算。/cs_operator_increment.cs using System;class MainClass static void

19、Maindouble x;x=1.5;Console.WriteLine+x;x=1.5;Console.WriteLinex+;Console.WriteLinex;二十、-减量运算符-将操作数减1。减量运算符可以出如今操作数之前或之后:-variable和variable-。第一种形式是前缀减量操作。该运算的结果是操作数减小"之后"的值。第二种形式是后缀减量操作。该运算的结果是操作数减小"之前"的值。备注:数值类型和枚举类型具有预定义的增量运算符。用户定义的类型可重载-运算符请参见运算符。在枚举时通常允许整型运算。/cs_operator_decre

20、ment.cs using System;class MainClass static void Maindouble x;x=1.5;Console.WriteLine-x;x=1.5;Console.WriteLinex-;Console.WriteLinex;二十一、&&条件"与"运算符&&执行其bool操作数的逻辑"与"运算,但仅在必要时才计算第二个操作数。备注:操作x&&y对应于操作x&y不同的是,假设x为false,那么不计算y因为不管y为何值,"与"操作的结果都为f

21、alse。这被称作为"短路"计算。不能重载条件"与"运算符,但常规逻辑运算符和运算符true与false的重载,在某些限制条件下也被视为条件逻辑运算符的重载。例如在下面的例如中,请观察使用&&的表达式只计算第一个操作数。using System;class MainClass static bool Method1Console.WriteLine"Method1 called";return false;static bool Method2Console.WriteLine"Method2 called&

22、quot;;return true;static void MainConsole.WriteLine"regular AND:";Console.WriteLine"result is0",Method1&Method2;Console.WriteLine"short-circuit AND:";Console.WriteLine"result is0",Method1&&Method2;二十二、|条件"或"运算符|执行bool操作数的逻辑"或"运算

23、,但仅在必要时才计算第二个操作数。备注:操作x|y对应于操作x|y不同的是,假设x为true,那么不计算y因为不管y为何值,"或"操作的结果都为true。这被称作为"短路"计算。不能重载条件"或"运算符,但规那么逻辑运算符和运算符true与false的重载,在某些限制条件下也被视为条件逻辑运算符的重载。例如在下面的例如中,请观察使用|的表达式只计算第一个操作数。using System;class MainClass static bool Method1Console.WriteLine"Method1 called&qu

24、ot;;return true;static bool Method2Console.WriteLine"Method2 called";return false;static void MainConsole.WriteLine"regular OR:";Console.WriteLine"result is0",Method1|Method2;Console.WriteLine"short-circuit OR:";Console.WriteLine"result is0",Method1|

25、Method2;二十三、左移运算符将第一个操作数向左挪动第二个操作数指定的位数。第二个操作数的类型必须是int。备注:假设第一个操作数是int或uint32位数,那么移位数由第二个操作数的低5位给出。假设第一个操作数是long或ulong64位数,那么移位数由第二个操作数的低6位给出。第一个操作数的高序位被放弃,低序空位用0填充。移位操作从不导致溢出。用户定义的类型可重载运算符请参见operator;第一个操作数的类型必须为用户定义的类型,第二个操作数的类型必须为int。重载二元运算符时,也会隐式重载相应的赋值运算符假设有。例如using System;class MainClass stat

26、ic void Mainint i=1;long lg=1;Console.WriteLine"0x0:x",i 1;Console.WriteLine"0x0:x",i 33;Console.WriteLine"0x0:x",lg 33;二十四、右移运算符将第一个操作数向右挪动第二个操作数所指定的位数。备注:假设第一个操作数为int或uint32位数,那么移位数由第二个操作数的低五位给出第二个操作数&0x1f。假设第一个操作数为long或ulong64位数,那么移位数由第二个操作数的低六位给出第二个操作数&0x3f。

27、假设第一个操作数为int或long,那么右移位是算术移位高序空位设置为符号位。假设第一个操作数为uint或ulong类型,那么右移位是逻辑移位高位填充0。用户定义的类型可重载运算符;第一个操作数的类型必须为用户定义的类型,第二个操作数的类型必须为int。有关更多信息,请参见operator。重载二元运算符时,也会隐式重载相应的赋值运算符假设有。例如using System;class MainClass static void Mainint i=-1000;Console.WriteLinei 3;二十五、=对于预定义的值类型,假设操作数的值相等,那么相等运算符=返回true,否那么返回fa

28、lse。对于string以外的引用类型,假设两个操作数引用同一个对象,那么=返回true。对于string类型,=比较字符串的值。备注:用户定义的值类型可重载=运算符请参见operator。用户定义的引用类型也可重载=运算符,尽管在默认情况下,无论对于预定义的引用类型还是用户定义的引用类型,=的行为都与上面描绘的一样。假设重载=,那么还必须重载!=。在枚举时通常允许整型运算。例如using System;class MainClass static void Main/Numeric equality:True Console.WriteLine2+2=4;/Reference equalit

29、y:different objects,/same boxed value:False.object s=1;object t=1;Console.WriteLines=t;/Define some strings:string a="hello";string b=String.Copya;string c="hello";/Compare string values of aconstant and an instance:True Console.WriteLinea=b;/Compare string references;/a is acons

30、tant but bis an instance:False.Console.WriteLineobjecta=objectb;/Compare string references,both constants/have the same value,so string interning/points to same reference:True.Console.WriteLineobjecta=objectc;二十六、!=假设操作数相等,那么不等运算符!=返回false,否那么,返回true。为所有类型包括字符串和对象预定义了不等运算符。用户定义的类型可重载!=运算符。备注:对于预定义的值

31、类型,假设操作数的值不同,那么不等运算符!=返回true,否那么,返回false。对于string以外的引用类型,假设两个操作数引用不同的对象,那么!=返回true。对于string类型,!=比较字符串的值。用户定义的值类型可重载!=运算符请参见operator。用户定义的引用类型也可重载!=运算符,尽管在默认情况下,无论对于预定义的引用类型还是用户定义的引用类型,!=的行为都与上面描绘的一样。假设重载!=,那么还必须重载=。在枚举时通常允许整型运算。例如using System;class MainClass static void Main/Numeric inequality:Conso

32、le.WriteLine2+2!=4;/Reference equality:two objects,same boxed value object s=1;object t=1;Console.WriteLines!=t;/String equality:same string value,same string objects string a="hello";string b="hello";/compare string values Console.WriteLinea!=b;/compare string references Console

33、.WriteLineobjecta!=objectb;二十七、=所有数值和枚举类型都定义了"小于等于"关系运算符=,假设第一个操作数小于或等于第二个操作数,那么该运算符将返回true,否那么返回false。using System;class MainClass static void MainConsole.WriteLine1=1.1;Console.WriteLine1.1=1.1;二十八、=所有数值类型和枚举类型都定义"大于等于"关系运算符=,假设第一个操作数大于或等于第二个操作数,该运算符将返回true,否那么返回false。using Sys

34、tem;class MainClass static void MainConsole.WriteLine1.1=1;Console.WriteLine1.1=1.1;二十九、+=加法赋值运算符。备注:使用+=赋值运算符的表达式,例如x+=y等效于x=x+y不同的是x只计算一次。+运算符的含义取决于x和y的类型例如,对于数值操作数,其含义为相加;对于字符串操作数,其含义为串联。不能直接重载+=运算符,但用户定义的类型可以重载+运算符请参见operator。例如using System;class MainClass static void Mainint a=5;a+=6;Console.Wr

35、iteLinea;string s="Micro";s+="soft";Console.WriteLines;三十、-=减法赋值运算符。备注:使用-=赋值运算符的表达式,如x-=y等效于x=x-y不同的是x只计算一次。-运算符的含义取决于x和y的类型例如,对于数值操作数,其含义为相减;对于委托操作数,其含义为移除。不能直接重载-=运算符,但用户定义的类型可重载-运算符请参见operator。例如using System;class MainClass static void Mainint a=5;a-=6;Console.WriteLinea;三十一、

36、*=二元乘法赋值运算符。备注:使用*=赋值运算符的表达式,如x*=y等效于x=x*y不同的是x只计算一次。为数值类型预定义了*运算符以执行乘法操作。不能直接重载*=运算符,但用户定义的类型可重载*运算符请参见operator。例如using System;class MainClass static void Mainint a=5;a*=6;Console.WriteLinea;三十二、/=除法赋值运算符。备注:使用/=赋值运算符的表达式,如x/=y等效于x=x/y不同的是x只计算一次。为数值类型预定义了/运算符以执行除法操作。不能直接重载/=运算符,但用户定义的类型可重载/运算符请参见op

37、erator。对于所有复合赋值运算符,隐式重载二元运算符会重载等效的复合赋值。例如using System;class MainClass static void Mainint a=5;a/=6;Console.WriteLinea;double b=5;b/=6;Console.WriteLineb;三十三、%=模块赋值运算符。备注:使用%=赋值运算符的表达式,如x%=y等效于x=x%y不同的是x只计算一次。为数值类型预定义了%运算符,以计算相除后的余数。不能直接重载%=运算符,但用户定义的类型可重载%运算符请参见运算符C#参考。例如using System;class MainClass

38、 static void Mainint a=5;a%=3;Console.WriteLinea;三十四、&="与"赋值运算符。备注:使用&=赋值运算符的表达式,如x&=y等效于x=x&y不同的是x只计算一次。&运算符对整数操作数执行按位逻辑"与"运算,对bool操作数执行逻辑"与"运算。不能直接重载&=运算符,但用户定义的类型可重载二元&运算符请参见operator。例如using System;class MainClass static void Mainint a=0x0

39、c;a&=0x06;Console.WriteLine"0x0:x8",a;bool b=true;b&=false;Console.WriteLineb;三十五、|="或"赋值运算符。备注:使用|=赋值运算符的表达式,例如x|=y等效于x=x|y不同的是x只计算一次。|运算符对整型操作数执行按位逻辑"或"运算,对布尔操作数执行逻辑"或"运算。不能直接重载|=运算符,但用户定义的类型可以重载|运算符请参见operator。例如using System;class MainClass static v

40、oid Mainint a=0x0c;a|=0x06;Console.WriteLine"0x0:x8",a;bool b=true;b|=false;Console.WriteLineb;三十六、="异或"赋值运算符。备注:以下形式的表达式x=y按如下规那么计算:x=xy不同的是x只计算一次。运算符对整数操作数执行按位"异或"运算,对bool操作数执行逻辑"异或"运算。不能直接重载=运算符,但用户定义的类型可重载!运算符请参见operator。例如using System;class MainClass stat

41、ic void Mainint a=0x0c;a=0x06;Console.WriteLine"0x0:x8",a;bool b=true;b=false;Console.WriteLineb;三十七、=左移赋值运算符。备注:以下形式的表达式x=y按如下规那么计算:x=x y不同的是x只计算一次。运算符将x向左挪动y指定的位数。不能直接重载=运算符,但用户定义的类型可重载运算符请参见operator。例如using System;class MainClass static void Mainint a=1000;a=4;Console.WriteLinea;三十八、=右移赋值运算符。备注:以下形式的表达式x=y按如下规那么计算:x=x y不同的是x只计算一次。运算符根据y指定的量对x进展右移位。不能直接重载=运算符,但用户定义的类型可重载运算符请参见operator。例如using System

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论