第三章 ASP.NET 基础

60
第第第 ASP.NET 第第

description

第三章 ASP.NET 基础. 本章将介绍 :. ASP 的基础语法规则 VB 、 C# 的基本应用知识 简单的范例和基本应用. 3.1 ASP.NET 语法. 对结构的理解有助于网站和网页的建立。 常见的标签符号有: 标签<%%>、 Runat 、 object 注释 Page 指令、 import 指令 等等. 3.1.1 标签<%%>. 标签 为目前流行的大多数的动态 Web 网页所支持 ASP 默认语言是 VBScript 执行标签 中的程序代码将会生成动态的 Web 页面。 - PowerPoint PPT Presentation

Transcript of 第三章 ASP.NET 基础

Page 1: 第三章  ASP.NET 基础

第三章 ASP.NET 基础

Page 2: 第三章  ASP.NET 基础

ASP 的基础语法规则 VB 、 C# 的基本应用知识 简单的范例和基本应用

本章将介绍 :

Page 3: 第三章  ASP.NET 基础

3.1 ASP.NET 语法

对结构的理解有助于网站和网页的建立。常见的标签符号有: 标签<%%>、 Runat 、 object 注释 Page 指令、 import 指令 等等

Page 4: 第三章  ASP.NET 基础

3.1.1 标签<%%>

标签 <%%> 为目前流行的大多数的动态 Web网页所支持

ASP 默认语言是 VBScript 执行标签 <%%> 中的程序代码将会生成动态

的 Web 页面。

见例程ch03_01

<% dim i as integer for i=1 to 4 %>

Page 5: 第三章  ASP.NET 基础

3.1.2 标签 Runat

如果指定了某种语言,那么在 <Script></script> 中写的语言必须与声明的语言保持一致

语法: <Script Language="C#“ Runat ="server"></script>

表示使用的开发语言是 C# ,同时 Runat 指出了在服务器端运行。

见例程ch03_02

Page 6: 第三章  ASP.NET 基础

例程 ch03_02 中:

<Script></script> 中定义了一个函数 choose

在 <%%> 内通过表达式 userinfro=choose(userno) 取得函数 choose 的返回值并传送给变量 userinfro

最后通过方法 Response.write 显示出来

Page 7: 第三章  ASP.NET 基础

3.1.3 标签 object

以 object 标签形式建立类 Class 的语法为: <object … runat="server"/>

例如使用 object 标签建立了一个 structer 类: <object id="items"

class="system.collections.structer“

runat="server"/>

Page 8: 第三章  ASP.NET 基础

例程代码: <object id="items" class="system.collections.structer" runa

t="server"/>

<script language="c#" runat=server>void page_load(object sender,eventargs e){ //items 为 object 所建的 structer 类的实例 items.add("s"); items.add("n"); items.add("d"); items.add("f"); items.add("g"); mylist.datasource=items; mylist.databind(); }</script>

Page 9: 第三章  ASP.NET 基础

当然如果不用 <object runat="server"/> 标签也可以建立类 structer

使用 new 关键字是建立类实例最常用的方法 例如: structer items= new structer() ;

Page 10: 第三章  ASP.NET 基础

3.1.4 注释

ASP.NET 中使用 <%-- 注释 --%> 注释语句 例如: <%-- <itemtemplate> wordlist:<%# container.dataitem%> </itemtemplate> --%> 注释语句不会被执行,浏览器上不会显示任何内容

Page 11: 第三章  ASP.NET 基础

3.1.5 Page 指令和 3.1.6 import 指令

Page 指令用来设置 ASP.NET 程序的个别属性

import 指令只有一个属性值—— namespace

Page 12: 第三章  ASP.NET 基础

3.2 C# 基础

C# 是 Microsoft Visual Studio .NET 的一部分

C# 将成为用于编写下一代窗口服务( Next Generation Windows Services , NGWS )应用程序的主要语言

Page 13: 第三章  ASP.NET 基础

3.2.1 常量和变量

常量和变量是所有数据类型的载体

1 .常量 所谓常量,就是在程序的运行过程中其值不能被改变

的量。常量的类型可以是 C# 的任何一种数据类型。标准的常量声明格式如下:

访问修饰符 const 常量数据类型 常量名=常量值; 例如: public const double MYCONSTANT=1979.0; 常量名一般使用大写字母。

Page 14: 第三章  ASP.NET 基础

2. 变量

相对于常量,变量就是在程序运行期间其值可以改变的量。变量必须有变量名,在内存中必定占据一定的存储单元,并在此存储单元中存放变量的值。

C #中变量名的命名规则如下: 变量名必须以字母开头。在 C# 中变量命名规则中有一

个特例,变量名可以以 @ 符号开始。 变量名只能由字母、数字、下划线组成,不能包括空格、

标点符号、运算符等特 殊符号。 变量名不能与 C# 中的关键字同名。 变量名不能与 C# 中的库函数名相同。

Page 15: 第三章  ASP.NET 基础

在 C# 中,可以将变量分为: 静态变量 实例变量 数组元素 值参数 引用参数 输出参数 局部变量

Page 16: 第三章  ASP.NET 基础

3.2.2 C# 的数据类型

在 C# 语言中共有以下两大类数据类型: 值类型 引用类型 所有值类型的变量具有实际存在于内存中的值,

也就是说当将一个值赋给变量时执行的是值拷贝操作,因此值类型必须初始化变量才可以使用。与之相对,引用类型只包含指向实际值的一个引用,赋值时只是将实际值的引用进行复制。

Page 17: 第三章  ASP.NET 基础

1 .值类型

C #的值类型分为 3 类: 简单类型 (Simple types) 、 结构类型 (Struct types) 、 枚举类型 (Enumeration types) ( 1 )简单类型 C# 的简单类型包含:整型、字符型(一种特殊的整

型)、布尔型、浮点型、小数型。 ◆ 整型: C# 中有 9 种整型,如表 3-3 所示,给整型

变量赋值方式例如: int x = 10; 。

Page 18: 第三章  ASP.NET 基础

( 1 )简单类型 包含:整型、字符型、布尔型、浮点型、小数型。 ◆整型: C# 中有 9 种整型,见下表:

类型 取值范围 说明sbyte - 128~ 127 有符号 8位整数bytet 0~ 255 无符号 8位整数short - 32768~ 32767 有符号 16位整数ushort 0~ 65535 无符号 16位整数int - 2147483648~ 2147483647 有符号 32位整数uint 0~ 4294967295 无符号 32位整数long 9223372036854775808~

9223372036854775807有符号 64位整数

ulong 0~ 18446744073709551615 无符号 64位整数char 一个单 Unicode字符

Page 19: 第三章  ASP.NET 基础

◆ 字符型(一种特殊的整型)

字符型实际为单个的 Unicode 字符。单个 Unicode 字符为 16 位长。

例如: char myChar = 'A';

char chSomeChar='\x0065'; char 类型无法隐式地转换为其他类型。支持显

式 char 转换: char myChar = (char)88;

int myInt = (int)'M';

Page 20: 第三章  ASP.NET 基础

C# 中的转义字符:

转义字符 表示的字符 转义字符 表示的字符

\’ 单引号 \a 感叹号

\” 双引号 \b 退格

\\ 反斜杠 \f 换页

\r 回车 \t 水平方向 Tab

\n 换行 \v 垂直方向 Tab

\0 空字符

Page 21: 第三章  ASP.NET 基础

◆ 布尔型

布尔数据类型仅有 true 和 false 两值,即逻辑真和逻辑假。 可以直接将 true 和 false 值赋给一个布尔变量,或将一

个判断语句的结果赋给布尔类型的变量,例如, bool Test= true;

bool flag =(100<110); // 此时的 flag 值为 true 注意:与 C 和 C++ 不同, 0 不再代表 false, 任何非零值

也不再代表 true 。在 C# 中, bool 类型的变量不能由其他类型的变量代替。

Page 22: 第三章  ASP.NET 基础

C# 中有两种浮点类型: float( 单精度浮点数)和 double(双精度浮点数

变量赋值: float x=1.00001 ;

类型 取值范围 精度

float 1.5×10^-45~3.4×10^38 7

double 5.0×10^-324~1.7×10^308 15~ 16

◆ 浮点型

Page 23: 第三章  ASP.NET 基础

小数型在所有数值类型中精度有 128 位,使用它一般做精度要求高的金融和货币的计算。

取值范围大约为 1.0x10^-28到 7.9x×10^28 , 有28~ 29 位的有效数字。

小数型变量赋值: decimal decMyValue = 1.0m; m 代表是小数类型的 1.0,否则将被编译器默认为 double 类型的 1.0 。 注意: decimal 类型和 double 类型之间没有精确的隐式

类型转换,从 decimal 转换成 double 可能造成精度丢失,从 double到 decimal 则可能会产生溢出 ( 由于 double 的取值范围比 decimal 大 ) 。

◆ 小数型

Page 24: 第三章  ASP.NET 基础

( 2 )结构类型和( 3 )枚举类型

结构类型可以用来声明构造函数、常数、字段、方法、属性、索引、操作符和嵌套类型。使用结构的主要目的是创建小型的类。

枚举类型是由一组特定的常量构成一种数据结构。

Page 25: 第三章  ASP.NET 基础

2 .引用类型

引用类型不存储实际数据,而存储实际数据的引用。

C# 中有以下引用类型: object 类型、类、接口、代表元、字符串类型、数组。

Page 26: 第三章  ASP.NET 基础

◆ Object 类型

Object 类型是所有类型的父类型,它是 C# 中所有其他类型的基类。正因为它是所有类型的父类,因此所有的类型的变量都可以赋给 object 类型的变量,例如:

object myobj=10000.50 ;

注意: C++ 程序员也许会将 object 理解为 void* ,这种理解是错误的。指针在 C# 中根本不存在。

Page 27: 第三章  ASP.NET 基础

◆ 类

类可以包含成员数据、成员方法甚至嵌套类。 成员数据包括常量、属性和事件。 成员方法包括方法、索引、操作符、构造函数

和析构函数。 与 C++ 的类相比, C# 中仅允许单继承。

Page 28: 第三章  ASP.NET 基础

◆ 接口

接口与类的最大差异在于接口定义了抽象的方法和索引等,但在接口中并不实现这些抽象的方法和索引。

接口的作用是告诉继承它的类,这些方法是要实现的。

Page 29: 第三章  ASP.NET 基础

◆ 代表元

C# 中取消了指针的概念,但在 C# 中增加了一种名为代表元的数据类型,它实际上相当于函数指针。

例如,声明一个指向返回值为 float 类型的函数的代表元:

delegate float myDelegate(); 可以用代表元指向函数,但它们的主要用途是拥有一个类事件。

Page 30: 第三章  ASP.NET 基础

◆ 字符串类型

字符串类型直接派生自对象类型,且它是 final类,这意味着不能从它再派生类。

C#增强了对字符串的各种操作。 例: 使用以下方式为字符串类型变量赋值:

string myString="Hello world";使用以下方式合并字符串: string myString = "Hello" + " world";使用以下方式访问字符串中单个字符: char myChar = myString[6];使用 "=="比较操作符来判断两个字符串是否相同。 if (thisString == thatString)

Page 31: 第三章  ASP.NET 基础

◆ 数组

数组是包含若干个相同类型的类型数据的集合。 所有数组的元素值通过数组名和下标来访问。 例:

一维数组 (int myArray[10])二维数组 (float myArray[10][10])三维数组 (myPoint myArrary[10][10][10]) 。

Page 32: 第三章  ASP.NET 基础

数组初始化: string[] myArray={"C","C++","C#","Java"}; string 类型的一维数组: myArray[0]="C" 使用以下方式声明数组而不初始化数组: int[] myArray=new int[1000]; C# 中数组的大小是变量: int nVar = 5;

int[] arrToo = new int[nVar];

Page 33: 第三章  ASP.NET 基础

3 .类型转换

C# 中包括两种类型转换: 隐式类型转换和显式类型转换。

(1 )隐式类型转换 隐式转化就是系统默认的、不需要显式声明的

转换。 隐式转换一定是安全的。 隐式类型转化包括以下 3 种类型:

Page 34: 第三章  ASP.NET 基础

◆ 隐式数值转换

隐式数值转化一般是将低精度的数值类型转换为高精度的数值类型。

从 sbyte 类型到 short, int, long, double或 decimal 类型。从 byte 类型到 short, ushort, int, uint, long, ulong , float, double或 decimal 类型。从 short 类型到 int, long , float; double或 decimal 类型。从 ushort 类型到 int, uint, long, ulong, float, double或 decimal 类型。从 int 类型到 long, float, double或 decimal 类型。从 long 类型到 float, double或 decimal 类型。从 ulong 类型到 float, double或 decimal 类型。从 char 类型到 ushort, int, uint, long, ulong, float, double或 decimal 类型。从 float 类型到 double 类型。

Page 35: 第三章  ASP.NET 基础

◆ 隐式枚举转换

隐式的枚举转换可以把整数 0 转换成枚举类型,但其他任何数都不可以。

◆ 隐式引用转换从任何引用类型到 object 类型的转换。从派生类到父类的转换。从派生类到其所继承的接口的转换。从派生接口到父接口的转换。

Page 36: 第三章  ASP.NET 基础

(2 )显式类型转换

显式类型转换,又被称为强制类型转换,需要用户明确地说明转化的类型。

显式数值转换有以下 3 种类型: 显式数值转换 显式枚举转换 显式引用转换

Page 37: 第三章  ASP.NET 基础

◆ 显式数值转换

显式数值转换是指系统不存在相应的隐式数值类型转换规则,用户需要显式声明的数值类型转换。

例如:从 int到 sbyte 、 byte 、 short 、 ushort 、 uint 、 ulong或 char 类型。从 uint到 sbyte 、 byte 、 short 、 ushort 、 int或 char 类型。从 long到 sbyte 、 byte 、 short 、 ushort 、 int 、 uint 、 ulong或 eh盯类型。从 char到 sbyte 、 byte或 short 类型。从 float到 sbyte 、 byte 、 short 、 ushort 、 int 、 uint 、 long 、 ulong 、char或 decimal 类型。从 decimal到 sbvte 、 bvte 、 short 、 ushort 、 int 、 uint 、 long 、 ulong 、char 、 float或 double 。

Page 38: 第三章  ASP.NET 基础

◆ 显式枚举转换

显式枚举转换是指从数值类型或者另一个枚举类型转化到枚举类型,或者由枚举类型转换到数值类型。

◆ 显式引用转换 显式引用转换是指系统没有定义的需要用户声明的从

一种引用类型到另一种引用类型的转换。 例如:从 object 类型到任何引用类型的转换。

从父类到派生类的转换。从类 A到其继承的接口 B 的转换,等等。

Page 39: 第三章  ASP.NET 基础

4 .装箱与拆箱

装箱与拆箱是 C# 引入的一类特别的类型转换。装箱是指从 C# 中任何的值类型到 object 类型的转换。拆箱是指从 object到任何值类型的转换。

◆ 装箱操作 给一个值装箱是指隐式地把 C# 中任何类型转换成 object

类型对象。当一个值类型被装箱时,在内存单元中一个对象实例就被分配,且值被复制给新的对象。

◆ 拆箱操作 拆箱操作是显式类型转换。这意味着用户必须显式地声

明,想将 object 对象转换成其他什么类型的对象。

Page 40: 第三章  ASP.NET 基础

◆ as 操作符

as 操作符是 C #定义的一个保证安全转换的操作符。使用 as 操作符执行显式转换,不会出现错误。即使无法完成转换,返回值将为 null,而不会出现异常。 as探作符只能用于引用类型。使用 as 操作符的格式如下:

y=x as A ( 类型 )

Page 41: 第三章  ASP.NET 基础

3.2.3 操作符与表达式

1 .算术操作符和算术表达式 C#提供了以下 5 种基本的算术操作符。+(加法操作符,或正值操作符,如 3+4 , +3) 一(减法操作符,或负值操作符,如 3-4 , -4) * (乘法操作符,如 3*4) / (除法操作符,如 3/4) %(求余操作符,如 3%4)

Page 42: 第三章  ASP.NET 基础

2 .赋值操作符和赋值表达式

赋值运算符用来给常量或者变量赋值 最简单的赋值运算符为”=”号 复合的赋值运算符包括: + =、-=、 * =、 / =、%=、 & =、 |= 、 ^ =、 <<= 、 >>

=

前 5 种是用于算术运算的,后 5 种用于位运算。 使用符合赋值运算符可简化程序, 提高效率,减小内存空间。

A+=B 相当于 A=A+BA-= B 相当于 A=A-B 。A*=B 相当于 A=A*B 。A/=B 相当于 A=A/B 。A%=B 相当于 A=A%B 。

Page 43: 第三章  ASP.NET 基础

3 .关系操作符和关系表达式

关系操作符是比较操作符,其返回值是 true或者 false 。(1 )常用比较操作符 有以下 6 种比较操作符: ==、 ! =、 > 、 < 、 >= 、 <= 例如: A == B ,比较的两值相等,返回 true,否则返回 fasle

A! = B ,比较的两值不等,返回 true,否则返回 falseA>B, 如果 A 大于 B ,返回 true,否则返回 falseA<B ,如果 A 小于 B ,返回 true,否则返回 falseA>=B, 如果 A 大于或者等于 B ,返回 true,否则返回 falseA<=B ,如果 A 小于或者等于 B ,返回 true ,否则返回 false

Page 44: 第三章  ASP.NET 基础

(2) is 操作符

和 C 有所不同,在 C# 中定义了 is 操作符,其格式如下:

A( 值 ) is B( 类型 )它的意义为判断一个值是否是 B 类型,或者能否通过装箱、拆箱、引用转换成功地转换为 B类型。如果是 B 类型,且可以成功地转换,则返回值为 true,否则返回值为 false 。

Page 45: 第三章  ASP.NET 基础

4 .逻辑操作符和逻辑表达式

C# 有 3 种基本的逻辑操作符:逻辑与、逻辑或及逻辑非:

&&、 || 、 !

A B !A !B A&&B A||B

true true false false true true

true false false true false true

false true true false false true

false false true true false false

Page 46: 第三章  ASP.NET 基础

5 .其他操作符

(1 )位运算符 包括: &与、 | 或、 ^异或、 ~ 取补、 <<左移、 >>右移

(2) 三元运算符 格式如下: A(判断条件 ) ? B( 表达式 1): C( 表达式 2) (3) 自增、自减操作符 ++ 、 -- (4 ) new 操作符 创建类、创建数组、创建代表元

Page 47: 第三章  ASP.NET 基础

(5) typeof 操作符 用于返回系统包含的类对象的类型 (6) checked 和 unchecked 操作符 检查整型算术运算时结果是否溢出。 (7) sizeof 操作符 用于得到一个类型的字节数,

Page 48: 第三章  ASP.NET 基础

3.2.4 C# 中的流程控制

C# 共有以下两类控制语句: 选择语句和循环语句 通过流程控制可以在程序中完成选择、循环控

制,从而实现更多复杂的功能。

Page 49: 第三章  ASP.NET 基础

1 .选择语句

C# 用了两个选择语句: if 语句和 switch 语句。 ◆ if 语句

标准的 if 语句的格式为: if( 布尔表达式 ) { 内嵌语句 1 } else { 内嵌语句 2 }

Page 50: 第三章  ASP.NET 基础

◆ switch 语句 通过控制表达式的值与选项的值比较,确定执行

标准的 switch 语句格式如下: switch (控制表达式) { case 表达式值一: 内嵌语句一 case 表达式二: 内嵌语句二 …… default: 默认执行语句 }

Page 51: 第三章  ASP.NET 基础

2 .循环语句

C #中提供了 4 种循环语句: for 语句、 For each 语句、 while 语句、 do 语句。 ◆ for 语句

标准的 for 语句的格式如下: for( 初始化语句 ;

循环控制条件; 循坏执行语句 ) 内嵌语句

Page 52: 第三章  ASP.NET 基础

◆ for each 语句

标准的 for each 语句格式如下: for each( 类型标识符 循环变量 in 表达式 ) 内嵌语句

Page 53: 第三章  ASP.NET 基础

◆ while 语句

标准的 while 语句的格式如下: while(循环控制条件 )

{

内嵌语句 }

Page 54: 第三章  ASP.NET 基础

◆ do 语句

do 语句的标准格式如下: do

{

内嵌语句 }

while(循环条件控制 )

Page 55: 第三章  ASP.NET 基础

3 .条件编译

条件编译的作用是在编译过程中有选择地将部分代码包含在最终的程序中。

(1) 预处理指令 两个最常用的预处理指令: #define :定义一个符号 #undefo :取消 #define 定义的符号

(2 ) 条件编译 4 个条件编译指令: #if 、 #elif 、 #else 、 endif 。

Page 56: 第三章  ASP.NET 基础

使用这些条件编译的指令,可以有选择地将一些代码包括在程序中或者将其剔除在外。

它们和前面介绍的 if 的选择语句类似,而且也可以使用逻辑操作符或(&&)、与 (||),非( ! )。

(3 ) 发出警告与错误 C# 可以在预处理阶段发出警告以及错误,具体

的指令为 #warning 和 #error 。

Page 57: 第三章  ASP.NET 基础

4 .异常处理

(1) 抛出异常的条件 使用 throw 语句抛出异常。 使用 throw 语句将无条件地、即时地抛出异常。 (2 ) 捕捉和处理异常 一般在程序中使用 try-catch 结构或者 try-catch-finally

结构来捕获和处理异常。 try块中的任何错误都可以被捕获,在 catch模块中处理相应的异常。

finally模块中的语句无论 try块中的语句是否抛出错误,都将被执行。

Page 58: 第三章  ASP.NET 基础

本章小结

介绍了 ASP.NET 的编程结构和语法规则,利于读者学习设计

介绍了在 ASP.NET 开发环境中使用语句的基本知识。 通过对本章的学习,应该深入认识 ASP.NET 的语法,

为下一章 ASP.NET 对象的应用打下基础。

Page 59: 第三章  ASP.NET 基础

返回例 ch03_01:

<html>图 3.1 显示 4 个“Welcome!” 的网页 <head><title> 示例 3-1</title></head> <body> <% dim i as integer for i=1 to 4 %> <br> Welcome! <% next %> </body></html>

Page 60: 第三章  ASP.NET 基础

返回例 ch03_02:

<%@page language="c#"%><Script Language="C#" Runat="server">String choose (String userno){ String user=null; switch(userno){ case "1": user="董事 "; break; case "2": user="经理 "; break; case "3": user="员工 "; break; } return user;}</script>

<html> <head><title> 等级选择 </title></head><body><center> <h2> 等级介绍 </h2> <hr><% String userno,userinfro; userno="1"; userinfro=choose(userno); Response.Write(" 等级 "); Response.Write(userno); Response.Write(":"); Response.Write(userinfro); Response.Write("<br>"); userno="2"; userinfro=choose(userno); Response.Write(" 等级 "); Response.Write(userno); Response.Write(":"); Response.Write(userinfro); Response.Write("<br>"); userno="3"; userinfro=choose(userno); Response.Write(" 等级 "); Response.Write(userno); Response.Write(":");图 3.2 显示“等级介绍”的网页 Response.Write(userinfro); Response.Write("<br>");%></center> </body> </html>