第3章C#和ASP.
NET4.
5本章要点:了解C#语言特点和编程规范.
了解常用.
NETFramework命名空间.
结合ASP.
NET4.
5页面熟悉C#语言的运用.
能结合ASP.
NET4.
5页面创建简单的类.
掌握ASP.
NET4.
5页面调试的方法.
3.
1C#概述C#是Microsoft专门为.
NET量身打造的一种全新的编程语言.
目前,C#已经分别被ECMA和ISO/IEC组织接受并形成ECMA-334标准和ISO/IEC23270标准.
它与.
NETFramework有密不可分的关系,C#的类型即为.
NETFramework所提供的类型,并直接使用.
NETFramework所提供的类库.
另外,C#的类型安全检查、结构化异常处理等都交给CLR处理.
实际上,ASP.
NET4.
5本身就采用C#语言开发,所以C#不仅适用于Web应用程序的开发,也适用于开发强大的系统程序.
总体来说,它具有以下典型特点:(1)C#代码在.
NETFramework提供的环境下运行,不允许直接操作内存,增强了程序的安全性.
C#不推荐使用指针,若要使用指针,就必须添加unsafe修饰符,且在编译时使用/unsafe参数.
(2)使用C#能构建健壮的应用程序.
C#中的垃圾回收将自动回收不再使用的对象所占用的内存;异常处理提供了结构化和可扩展的错误检测和恢复方法;类型安全的设计则避免了读取未初始化的变量、数组索引超出边界等情形.
(3)统一的类型系统.
所有C#类型都继承于一个唯一的根类型object.
因此,所有类型都共享一组通用操作.
(4)完全支持组件编程.
现代软件设计日益依赖自包含和自描述功能包形式的软件组件,通过属性、方法和事件来提供编程模型.
C#可以容易地创建和使用这些软件组件.
3.
2.
NETFramework命名空间.
NETFramework提供了几千个类用于对系统功能的访问,这些类是建立应用程序、组件和控件的基础.
在.
NETFramework中,组织这些类的方式即是命名空间.
要在ASP.
NET网站中使用这些命名空间,需要使用using语句,如usingSystem;表示导入System命名空间.
导入命名空间后使得要访问包含的类时可省略命名空间.
例如,若没有使用usingSystem;语句,则stringstrNum="100";这个语句就会出现编译错误,此时就应该用第3章C#和ASP.
NET4.
537System.
StringstrNum="100";代替.
注意:C#语言区分大小写.
语句System.
StringstrNum="100";中String首字母大写,其实这里的String是System命名空间中的一个类.
而stringstrNum="100";中string表示一种数据类型.
常用于ASP.
NET4.
5页面的命名空间有:System——提供基本类.
System.
Configuration——提供处理配置文件中数据的类.
System.
Data——提供对ADO.
NET类的访问.
System.
Ling——提供使用LINQ进行查询的类和接口.
System.
Web——提供使浏览器与服务器相互通信的类和接口.
System.
Web.
Security——提供实现ASP.
NET安全性的类.
System.
Web.
UI——提供用于创建Web应用程序用户界面的类和接口.
System.
Web.
UI.
HtmlControls——提供在Web窗体上创建HTML服务器控件的类.
System.
Web.
UI.
WebControls——提供在Web窗体上创建Web服务器控件的类.
System.
Web.
UI.
WebControls.
WebParts——提供用于创建个性化Web部件页的类和接口.
System.
Xml.
Linq——提供用于LINQtoXML的类.
3.
3编程规范3.
3.
1程序注释注释有助于理解代码,有效的注释是指在代码的功能、意图层次上进行注释,提供有用、额外的信息,而不是代码表面意义的简单重复.
程序注释需要遵守下面的规则:(1)类、方法、属性的注释采用XML文档格式注释.
多行代码注释采用/*…*/.
单行代码注释采用//….
(2)类、接口头部应进行XML注释.
注释应列出内容摘要、版本号、作者、完成日期、修改信息等.
(3)公共方法前面应进行XML注释,列出方法的目的/功能、输入参数、返回值等.
(4)在{}中包含较多代码行的结束处应加注释,特别是多分支、多重嵌套的条件语句或循环语句.
(5)对分支语句(条件分支、循环语句等)应编写注释.
这些语句往往是程序实现某一特殊功能的关键,对于维护人员来说,良好的注释有助于更好地理解程序,有时甚至优于看设计文档.
3.
3.
2命名规则命名时常考虑字母的大小写规则,主要有Pascal和Camel两种形式.
Pascal形式将标识符的首字母和后面连接的每个单词的首字母都大写,如BackColor.
Camel形式将标识符的首字母小写,而每个后面连接的单词的首字母都大写,如backColor.
常用标识符的大小写方式如表3-1所示.
Web程序设计——ASP.
NET实用网站开发(第2版)38表3-1常用标识符的大小写方式对应表标识符方式示例标识符方式示例类PascalAppDomain接口PascalIDisposable枚举类型PascalErrorLevel方法PascalToString枚举值PascalFatalError命名空间PascalSystem事件PascalValueChanged参数CameltypeName异常类PascalWebException属性PascalBackColor只读的静态字段PascalRedValue变量名CamelstrName下面是命名时应遵守的其他规则.
(1)用正确的反义词组命名具有互斥意义的变量或相反动作的函数等.
(2)常量名都要使用大写字母,用下划线分割单词,如MIN_VALUE等.
(3)一般变量名不得取单个字符(如i、j、k等)作为变量名,局部循环变量除外.
(4)类的成员变量(属性所对应的变量)使用前缀_,如属性名为Name,则对应的成员变量名为_Name.
(5)控件命名采用"控件名简写+英文描述"形式,英文描述首字母大写.
建议采用如表3-2所示的常用控件名简写规范.
(6)接口命名在名字前加上I前缀,如IDisposable.
表3-2建议的常用控件名简写规范表控件名简写控件名简写控件名简写LabellblTextBoxtxtRadioButtonrdoButtonbtnLinkButtonlnkbtnImageimgImageButtonimgbtnDropDownListddlRangeValidatorrvListBoxlstGridViewgvRequiredFieldValidatorrfvDataListdlCheckBoxchkCompareValidatorcvCheckBoxListchklsAdRotatorarValidatorSummaryvsRadioButtonListrdoltTabletblRegularExpressionValidatorrevPanelpnlCalendarcld3.
4常量与变量3.
4.
1常量声明常量具有在编译时值保持不变的特性,声明时使用const关键字,同时必须初始化.
使用常量的好处主要有:常量用易于理解的名称替代了"含义不明确的数字或字符串",使程序更易于阅读;常量使程序更易于修改,如个人所得税计算中,若使用TAX常量代表税率,当税率改变时,只需修改常量值而不必在整个程序中修改相应税率.
常量的访问修饰符有public、internal、protectedinternal和private等,如:publicconststringCORP="一舟网络";//定义公共的字符型常量CORP,值为"一舟网络"3.
4.
2变量声明变量具有在程序运行过程中值可以变化的特性,必须先声明再使用.
变量名长度任意,第3章C#和ASP.
NET4.
539可以由数字、字母、下划线等组成,但第一个字符必须是字母或下划线.
C#是区分大小写的,因此strName和strname代表不同的变量.
变量的修饰符有public、internal、protected、protectedinternal、private、static和readonly,C#中将具有这些修饰符的变量称为字段,而把方法中定义的变量称为局部变量.
注意:局部变量前不能添加public、internal、protected、protectedinternal、private、static和readonly等修饰符.
3.
4.
3修饰符public、internal、protected、protectedinternal、private修饰符都用于设置变量的访问级别,在变量声明中只能使用这些修饰符中的一个.
它们的作用范围如表3-3所示.
表3-3访问修饰符的作用范围表修饰符作用范围public访问不受限制,任何地方都可访问internal在当前程序中能被访问protected在所属的类或派生类中能被访问protectedinternal在当前的程序或派生类中能被访问private在所属的类中能被访问使用static声明的变量称静态变量,又称为静态字段.
对于类中的静态字段,在使用时即使创建了多个类的实例,都仅对应一个实例副本.
访问静态字段时只能通过类直接访问,而不能通过类的实例来访问.
使用readonly声明的变量称只读变量,这种变量被初始化后在程序中不能修改它的值.
3.
4.
4局部变量作用范围1.
块级块级变量是作用域范围最小的变量,如包含在if、while等语句段中的变量.
这种变量仅在块内有效,在块结束后即被删除.
如下面程序段中的strName变量,在程序段结束之后不能被访问.
if(nSum==1){stringstrName="张三";//strName是块级变量}lblMessage.
Text=strName;//不能访问strName,会产生编译错误2.
方法级方法级变量作用于声明变量的方法中,在方法外不能访问.
protectedvoidPage_Load(objectsender,EventArgse){stringstrName="张三";//strName是方法级变量}protectedvoidbtnSubmit_Click(objectsender,EventArgse){Web程序设计——ASP.
NET实用网站开发(第2版)40lblMessage.
Text=strName;//不能访问strName,会产生编译错误}3.
对象级对象级变量可作用于定义类的所有方法中,只有相应的ASP.
NET页面结束时才被删除.
publicpartialclass_Default:System.
Web.
UI.
Page{stringstrName="张三";//strName是对象级变量protectedvoidPage_Load(objectsender,EventArgse){strName="李四";}protectedvoidbtnSubmit_Click(objectsender,EventArgse){lblMessage.
Text=strName;//能访问strName}}3.
5数据类型C#数据类型有值类型和引用类型两种.
值类型变量直接包含它们的数据,而引用类型变量存储它们的数据的引用.
对于值类型,一个变量的操作不会影响另一个变量;而对于引用类型,两个变量可能引用同一个对象,因此对一个变量的操作可能会影响到另一个变量.
3.
5.
1值类型值类型分为简单类型、结构类型、枚举类型.
简单类型再分为整数类型、布尔类型、字符类型和实数类型.
1.
简单类型1)整数类型整数类型的值都为整数,在具体编程时应根据实际需要选择合适的整数类型,以免造成存储资源浪费.
2)布尔类型布尔类型表示"真"和"假",用true和false表示.
注意:布尔类型不能用整数类型代替,如数字0不能代替false.
3)字符类型字符类型采用Unicode字符集标准,一个字符长度为16位.
字符类型的赋值形式有:charc1='A';//一般方式,值为字符Acharc2='中';//值为汉字"中"charc3='\x0041';//十六进制方式,值为字符Acharc4='\u0041';//Unicode方式,值为字符Acharc5=转义符方式,值为单引号',其中等号右边是"单引号、\、单引号、单引号"注意:char类型变量声明时必须包含在一对单引号中,如语句"charc6="A";"编译时将第3章C#和ASP.
NET4.
541出错.
4)实数类型实数类型分为float单精度类型、double双精度类型和decimal十进制类型.
其中float、double类型常用于科学计算,decimal类型常用于金融计算.
注意:float类型必须在数据后添加F或f,decimal类型必须添加M或m,否则编译器以double类型处理,如"floatfNum=12.
6f;".
2.
结构类型把一系列相关的变量组织在一起形成一个单一实体,这种类型叫结构类型,结构体内的每个变量称为结构成员.
结构类型的声明使用struct关键字.
下面的示例代码声明学生信息StudentInfo结构,其中包括Name、Phone、Address成员.
publicstructStudentInfo{publicstringName;publicstringPhone;publicstringAddress;}StudentInfostStudent;//stStudent为一个StudentInfo结构类型变量对结构成员访问使用"结构变量名.
成员名"形式,如"stStudent.
Name="张三";".
3.
枚举类型枚举类型是由一组常量组成的类型,使用enum关键字声明.
枚举中每个元素默认是整数类型,且第一个值为0,后面每个连续的元素依次加1递增.
若要改变默认起始值0,可以通过直接给第一个元素赋值的方法来改变.
枚举类型的变量在某一时刻只能取某一枚举元素的值.
实例3-1运用枚举类型变量本实例首先定义枚举类型Color,再声明enumColor枚举变量,最后以两种形式输出enumColor值.
源程序:Enum.
aspx部分代码…(略)源程序:Enum.
aspx.
csusingSystem;publicpartialclassChap3_Enum:System.
Web.
UI.
Page{enumColor//声明枚举类型Color{Red=1,Green,Blue}protectedvoidPage_Load(objectsender,EventArgse){Web程序设计——ASP.
NET实用网站开发(第2版)42ColorenumColor=Color.
Green;inti=(int)Color.
Green;Response.
Write("enumColor的值为:"+enumColor+"");//输出GreenResponse.
Write("i的值为:"+i);//输出2}}操作步骤:在Chap3文件夹中新建Enum.
aspx和Enum.
aspx.
cs.
在Enum.
aspx.
cs中输入阴影部分内容.
浏览Enum.
aspx呈现如图3-1所示的界面.
图3-1Enum.
aspx浏览效果3.
5.
2引用类型C#引用类型包括class类型、接口类型、数组类型和委托类型.
1.
class类型class类型定义了一个包含数据成员(字段)和函数成员(方法、属性等)的数据结构,声明使用class关键字.
在3.
8节中将详细地介绍有关类的内容.
1)object类型作为class类型之一的object类型,在.
NETFramework中实质是System.
Object类的别名.
object类型在C#的统一类型系统中有特殊作用,所有其他类型(预定义类型、用户定义类型、引用类型和值类型)都是直接或间接地从System.
Object类继承,因此,可以将任何类型的数据转化为object类型.
2)string类型另外一种作为class类型的string类型在C#中实质是一种数组,即字符串可看作是一个字符数组.
在声明时要求放在一对双引号之间.
对于包含\等字符的字符串,要使用转义符形式,如下面的示例代码:stringstrPath="C:\\ASP.
NET\\Default.
aspx";对需要转义符定义的字符串,C#中的@字符提供了另一种解决方法,即在字符串前加上@后,字符串中的所有字符都会被看作原来的含义,如上面的示例代码可写成:stringstrPath=@"C:\ASP.
NET\Default.
aspx";另外,[]运算符可访问字符串中各个字符,如:stringstrTest="abcdefg";charx=strTest[2];//x的值为'c'注意:string类型声明需要一对双引号,而char类型声明需要一对单引号.
第3章C#和ASP.
NET4.
543实际编程时经常遇到要将其他数据类型转换为string类型的情形,这可以通过ToString()方法实现,如:stringstrInt=23.
ToString();//int类型转换为string类型ToString()方法还提供了很实用的用于转换成不同格式的参数,如下面示例中P表示百分比格式,D表示长日期格式,其他的参数详见MSDN.
Response.
Write(0.
234.
ToString("P"));//输出23.
4%//输出当前系统日期,形式如"2013年12月21日"Response.
Write(DateTime.
Now.
ToString("D"));若要将string类型转换为其他类型,可使用Parse()方法或Convert类的相应方法,如:intiString=Int32.
Parse("1234");//将string类型转换为int32类型//将日期类型转换为string类型stringstrDatetime=Convert.
ToString(DateTime.
Now);2.
接口类型接口常用来描述组件对外能提供的服务,如组件与组件之间、组件和用户之间的交互都是通过接口完成.
接口中不能定义数据,只能定义方法、属性、事件等.
包含在接口中的方法不定义具体实现,而是在接口的继承类中实现.
3.
数组类型数组是一组数据类型相同的元素集合.
要访问数组中的元素时,可以通过"数组名[下标]"形式获取,其中下标编号从0开始.
数组可以是一维的,也可以是多维的.
下面是数组声明的多种形式:string[]s1;//定义一维数组,但未初始化值int[]s2=newint[]{1,2,3};//定义一维数组并初始化int[,]s3=newint[,]{{1,2},{4,5}};//定义二维数组并初始化4.
委托类型委托是一种安全的封装方法的类型,类似于C和C++中的函数指针.
与C中的函数指针不同,委托是类型安全的,通过委托可以将方法作为参数或变量使用.
3.
5.
3装箱和拆箱装箱和拆箱是实现值类型和引用类型相互转换的桥梁.
装箱的核心是把值类型转换为对象类型,也就是创建一个对象并把值赋给对象,如:inti=100;objectobjNum=i;//装箱拆箱的核心是把对象类型转换为值类型,即把值从对象实例中复制出来,如:inti=100;objectobjNum=i;//装箱intj=(int)objNum;//拆箱Web程序设计——ASP.
NET实用网站开发(第2版)443.
6运算符表3-4总结了C#中常用的运算符,并按优先级从高到低的顺序列出.
表3-4运算符对应表类别表达式说明x.
m成员访问x(…)方法和委托调用x[…]数组和索引器访问x++后增量x--后减量newT(…)对象和委托创建newT(…){…}使用初始值设定项创建对象new{…}匿名对象初始值设定项newT[…]数组创建基本typeof(T)获得T的System.
Type对象-x求相反数!
x逻辑求反~x按位求反++x前增量--x前减量一元(T)x显式地将x转换为类型Tx*y乘法x/y除法乘除x%y求余x+y加法、字符串串联、委托组合加减x–y减法、委托移除x>y右移xy大于x=y大于或等于xisT如果x属于T类型,则返回true,否则返回false关系和类型检测xasT返回转换为类型T的x,如果x不是T,则返回nullx==y若x等于y,则为true,否则falsex!
=y若x不等于y,则为true,否则falsex&y整型按位AND、布尔逻辑ANDx^y整型按位XOR、布尔逻辑XORx|y整型按位OR、布尔逻辑ORx&&y仅当x为true时才对y求值,再执行布尔逻辑AND操作逻辑操作x||y仅当x为false时才对y求值,再执行布尔逻辑OR操作条件xy:z如果x为true,则对y求值并返回y的值;如果x为false,则对z求值并返回z的值x=y赋值xopy复合赋值;支持op运算符有:赋值或匿名函数(Tx)=>yLambda表达式第3章C#和ASP.
NET4.
5453.
7流程控制与其他语言类似,C#提供了选择、循环等结构.
用于选择结构的有if和switch语句;用于循环结构的有while、do-while、for和foreach语句.
3.
7.
1选择结构1.
if语句语法格式一:if(条件表达式){语句序列}执行顺序:计算条件表达式.
若值为true,则执行"语句序列";否则执行if语句的后续语句.
语法格式二:if(条件表达式){语句序列1}else{语句序列2}执行顺序:计算条件表达式.
若值为true,则执行"语句序列1";否则执行"语句序列2".
注意:条件表达式在判断是否相等时一定要用==.
2.
switch语句if语句实现的是两路分支功能,若要用if语句实现两路以上的分支时,必须嵌套if语句.
而使用switch语句能很方便地实现多路分支功能.
语法格式如下:switch(控制表达式){case常量1:语句序列1case常量2:语句序列2default:语句序列n}执行顺序:计算控制表达式.
若值与某一个case后面的常量值匹配,则执行此case块中的语句;若值与所有case后面的常量值均不匹配,则执行default语句块.
实例3-2运用switch语句如图3-2所示,本实例根据今天是星期几在页面上输出相应信息.
图3-2Switch.
aspx浏览效果Web程序设计——ASP.
NET实用网站开发(第2版)46源程序:Switch.
aspx部分代码…(略)源程序:Switch.
aspx.
csusingSystem;publicpartialclassChap3_Switch:System.
Web.
UI.
Page{protectedvoidPage_Load(objectsender,EventArgse){DateTimedtToday=DateTime.
Today;//获取今天的系统日期switch(dtToday.
DayOfWeek.
ToString())//枚举值转换为字符型{case"Monday":Response.
Write("今天是星期一!
");break;case"Tuesday":Response.
Write("今天是星期二!
");break;case"Wednesday":Response.
Write("今天是星期三!
");break;case"Thursday":Response.
Write("今天是星期四!
");break;case"Friday":Response.
Write("今天是星期五!
");break;default:Response.
Write("今天可以休息了!
");break;}}}3.
7.
2循环结构1.
while语句while语句根据条件表达式的值,执行0次或多次循环体.
语法格式如下:while(条件表达式){语句序列}执行顺序:(1)计算条件表达式.
(2)若条件表达式的值为true,则执行循环体中语句序列,然后返回(1);否则执行while后续语句.
第3章C#和ASP.
NET4.
547实例3-3运用while语句本实例在页面上的文本框中输入一个值n,单击"确定"按钮后计算1+3+…+n,再在一个标签控件中输出计算值.
源程序:While.
aspx部分代码请输入一个数字
RAKsmart发布了新年钜惠活动,即日起到2月28日,商家每天推出限量服务器秒杀,美国服务器每月30美元起,新上了韩国服务器、GPU服务器、香港/日本/美国常规+站群服务器、1-10Gbps不限流量大带宽服务器等大量库存;VPS主机全场提供7折优惠码,同时针对部分特惠套餐无码直购每月仅1.99美元,支持使用PayPal或者支付宝等方式付款,有中英文网页及客服支持。爆款秒杀10台/天可选精品网/大...
RAKsmart 商家我们应该较多的熟悉的,主营独立服务器和站群服务器业务。从去年开始有陆续的新增多个机房,包含韩国、日本、中国香港等。虽然他们家也有VPS主机,但是好像不是特别的重视,价格上特价的时候也是比较便宜的1.99美元月付(年中活动有促销)。不过他们的重点还是独立服务器,毕竟在这个产业中利润率较大。正如上面的Megalayer商家的美国服务器活动,这个同学有需要独立服务器,这里我一并整理...
LayerStack(成立于2017年),当前正在9折促销旗下的云服务器,LayerStack的云服务器采用第 3 代 AMD EPYC™ (霄龙) 处理器,DDR4内存和企业级 PCIe Gen 4 NVMe SSD。数据中心可选中国香港、日本、新加坡和洛杉矶!其中中国香港、日本和新加坡分为国际线路和CN2线路,如果选择CN2线路,价格每月要+3.2美元,付款支持paypal,支付宝,信用卡等!...
dropdownlist清空为你推荐
投保winrar5巧摄专业版使用指南Couriercss支持ipad支持ipadcss3圆角css实现圆角的几种方法是什么?win7如何关闭445端口如何关闭WIN7自动配置 IPV4 地址 169.254icloudiphone自己用icloud把iPhone抹掉了.激活却不是自己的id怎么破win7关闭135端口win7下怎么关135和8909端口ipad上不了网ipad连上家里的无线却不能上网
空间主机 com域名注册 vps交流 泛域名绑定 火山主机 bluevm burstnet inmotionhosting pw域名 128m内存 gomezpeer 京东云擎 免费ddos防火墙 云鼎网络 100x100头像 中国电信测速112 大容量存储器 网站木马检测工具 hinet 91vps 更多