您的位置:首页 > 编程语言 > ASP

《asp.net 2.0 开发指南》读书笔记之一(4.3)

2006-07-13 14:10 381 查看
4.2 数据类型

4.2.1 值类型

转义符对应列表

转义符 字符名

/' 单引号

/" 双引号

// 反斜杠

/0 空字符

/a 感叹号

/b 退格

/f 换页

/n 新行

/r 回车

/t 水平Tab

/v 垂直Tab

5.结构类型

把一系列相关的变量组织在一起,使其成为一个单一实体的过程,称为创建结构的过程。

创建的单一实体的类型叫结构类型(struct).结构的成员在默认状态下是私有的。

//结构能够完成类所能完成的多数任务(结构不支持继承,而类支持)//*结构的实例占用了堆栈空间,结构适合于表示相对较少的对象。

EG:
public struct PhoneBook

{
public string Name;
public string Photo;
public string Address;
}

phoneBook p1;

//*从一个结构复制到另一个结构,使用等号“=”。

EG(struct Copy):

PhoneBook P1;
phoneBook P2;
p1=new PhoneBook();
p1.Name="Sondy";
p1.phone="88888";
p1.Address="China";
p2=p1;

(*actually,在调用new之前,结构P1是可以使用的,并且也可以为其结构成员赋值。struct在声明初始化,它的所有成员都设置为默认值0。

if没有使用new关键字进行初始化,编译器是不允许把一个结构copy到另一个结构,也不允许在设置其成员前读取它们*)

6.枚举类型(enum)

//一组称为枚举列表的命名常数组成的独特类型。枚举声明开始于一个关键词enum,include 一个名称定义、访问能力、基本类型和枚举成员

。默认的基本类型是int.(常见的TYPE有 byte,short,int ,long)//*不可是char

EG:

Enum WeekDay

{
Mondy=1,Tuesay,Wednesday,Thursday,Friday,Saturday,Sunday);
}
WeekDay day;

//*枚举类型的变量在某一时刻只能取枚举其中某个元素的值,默认类型为int,默认值为0。

4.2.2 引用类型

包括6种:类,对象,字符串,接口,数组和委托。

3.字符串类型

字符串定义在两个双引号("..")之中。

//C#字符串和字符一样,可以包含任何Unicode、十六进制等转义序列。转义序列以反斜杠(/)开头。

//* 不能在字符串中使用非转义的反斜杠字符。

EG:string str="c://myFile/default.cs";

//*字符串前加上字符@,字符串原意思。

EG:string str=@"c://myFile/default.cs";

//利用下标从字符串中获取字符

EG:string str1="come on ";

char ch=str1[2]; //获取字符串首个字符m

4.接品类型

//接口用于为实现它们的类定义功能。(接口定义了一个协定,实现接口的类必须实现接口协定)

//可定义属性、方法、事件和索引等。

//*不能被实例化。

//接口是独立于为的一个定义 ,并由接口定义类之间交互的标准。是类之间交互内容的一个抽象。

//把类之间需要交互的内容抽象出来定义成接口,可以更好地控制类之间的逻辑交互。

//一个接口可从多个基本接口继承,一个类可以实现多个接口。

EG:定义一个接口(包含一个事件E,一个方法F和一个属性P)

Interface Iexample

{
event EventHandeler E;
void F(int value);
string p{get;set;}
}

5.数组类型(array)

一种数据结构,包含了通过计算索引访问的变量成员。

//下标从0开始,向后自动递增

EG:

string[] a1; //一维数组定义

string[] a1=new string[0]; //初始化特定的大少的数组

string[] s={"first","second"}; //为数组定值;

string [,] a2; //二维数组

//*确定一特定维数的长度。使用Length属性。数组是多维时,使用GetLength方法确定某一特定维数的长度。可使用Sort方法为数组元素排序

,使用Reverse方法进行反向排列。

6.委托类型

//指引用方法的类型,(如c++中的函数指针原型)。委托在C#中是类型是安全的。

EG:delegate void VoidOperation(unit x);

//*解释为:给方法的特征指定的一个名称。定义了一个委托VoidOperation,并指定该委托的每个实例都包含一个方法的特征(带有一个unit类

型参数,并且方法的返回值类型是void),advert:在定义委托过程中,必给出委托所代表的方法的全部细节特征。

//*给定委托的实例可以表示任何类型的任何对象上的实例方法或静态方法。只要方法的特征匹配于委托的特征。

public delegate string GetStringFromInt(); //定义一个委托
public static void Main(string[] args)
{
int x = 128;
GetStringFromInt StringMethod = new GetStringFromInt(x.ToString);//实例化委托

Console.WriteLine("String is" + StringMethod());//调用委托实例
}

4.2.3 装箱和拆箱

实现值类型与引用类型的互相转换。

1、装箱

把值类型转换为对象类型,或者转换为由值类型执行的接口类型。

//把一个值类型的值装箱,即创建一个对象并把这个值赋值给这个对象。

装箱转换(四种):

a.从任何值类型转为对象类型;

b.从任何值类型转换为System.valueType类型;

c.从任何值类型转换为值类型实现的任何接口类型;

d.从任何枚举类型转换为System.Enum类型。

//装箱转换意味着复制一个欲被装箱的值。(comparatively,引用类型转为对象类型时,转换后的值继续引用同一实例,只是半它当成对象类

型)

EG:

int i=100;
object obj=i;

2.拆箱

//将引用类型显式转换为值类型;OR半一个接口类型转换为一个实现接口的值类型。

kind FOUR:

a.从对象类型转换为任何值类型;

b.从System.ValueType类型转换为任何值类型

c.从任何接口类型转换为实现该接口类型的任何值类型;

d.从System.Enum类型转换为任何枚举类型

拆箱(两个步骤):一是检查对象实例是否是给定的值类型的装箱值;二是将值从对象实例中复制出来。

EG:

int i=100;
object obj=i;
int j=(int)obj;
....

//构造函数(constructor)是一种特殊的成员函数,它提供了对成员变量进行初始化的方法,使得在声明时能自动地初始化对象.因为当程序

创建一个对象时,系统会自动调用该对象所属类的构造函数.
//析构函数(destructor)也是一种成员函数,但它的作用与构造函数相反,用来在系统释放对象前做一些清理工作,如利用delete运算符释放

临时分配的内存,清零某些内存单元等.当一个对象生存期结束时,系统会自动调用该对象所属类的析构函数;
//构造函数的名称与类名相同,而析构函数的名称必须在类名前加上"~"符号;注意,构造函数和析构函数不能指定任何返回值类型,包括void

返回类型;

4.3 变量和常量

4.3.1 变量(Variable)

//变量代表存储地址,变量类型决定存储在变量中的类型。变量被赋值之前,变量类型必须明确声明。变量的值可以通过赋值被改变。

修饰符包括:public,internal,protected,protected internal,private,static,readonly.

public修饰符的变量可以作为所属的类型的一个字段,在任何地方都可以访问;

internal 当前程序访问

protected 变量只能在当前程序被访问,或者在派生该类型的其他类型中被访问;

protected internal 当前程序中被访问,或者在派生当前类型的其他类型中被访问;

private 只能在所属于的类型中被访问

static 静态变量

readonly 只读变量(变量初始化后,不能修改其值)

变量分为7种类型:静态变量,实例变量,数组元素,局部变量,值参数,引用参数,输出参数

EG:

public A

{
public static int x;
int y;
void F(int [],int a,ref int b,out int c)
{
int i=1;
c=a+b++;
}

}

//* x是静态变量,y是实例变量,v[0]是数组元素,a是值元素,b是引用参数,c是输出参数,i是局部变量。

(1) 静态变量(static)

//被创建并加载后生效,被卸载后失效(无论创建多少个静态变量的实例,都只有一个副本。),静态变量最好是在定义时立刻赋值。

(2) 实例变量

//一个没有"static"修饰符声明的变量称为实例变量(类中实例变量的初始值为该数组元素类型的默认值)

(3) 数组元素

//数组中每个元素的初始值为该数组元素类型的默认值。

(4)局部变量

//局部变量为局部变量声明语句创建(EG: for,switch,using)

EG:

for(int i=0;i<10;i++)

{
int num=a; //非法,局部变量a没有定义
int a;
int b=a;

}

(5) 值参数

//一个不带有ref或out修饰的参数被声明时, 称为值参数。

(6)引用参数

//一个带有ref修饰符的参数被声明(引用参数本身并不创建新的存储空间,而是指向函数子句调用时,作为参数给出的相关变量表征的存储空

间。这样,此引用参数的值总是等于它所指向的变量。在对引用参数赋值时需要注意:当一个变量被传递给函数子句,调用相关引用参数之初

之前,自身必须被被明确赋值。函数子句界定的范围内,引用参数被认为是初始化的。)

(7) 输出参数

//一个带有out修饰符的参数被声明后,称为输出参数。(输出参数本身并不创建新的存储空间,而是指向函数子句调用时,作为参数给出的相

关变量表征的存储空间。这样,输出参数的值总是等于它所指向的变量。在结构体类型的构造函数中,关键字this是此结构体类型的输入参数)

a.一个变量被传递给函数子句调用中相关输出参数之前,自身不需要被明确地赋值。

b.函数子句调用时,每个被传递给输出参数的变量被认为在该执行路径中己被赋值。

c.函数子句界定的范围内,输出参数被认为是初始化的。

d.函数子句返回之前,每一个输出参数必须被明确地赋值。

4.3.2 常量

//值在使用过程中不会发生变化的量。(任何一种值类型或是引用类型)

//*变量前加关键字const,即把该变量指定为一个常量

常量声明代码:

attributes constant-modifiers const type constant-declarators;

常量修饰符constant-modifiers :new ,public,protected,internal private.

常量类型type(must):byte,short,ushort,int,uint,ulong,char,float,double,decimal,bool,string or 引用类型。

常量表达式constant-declarators 表示常量的名字

(常量使用易于理解的名称代替了那些不容易理解的、含义不明确的数组或字符串,程序易于阅读)

(常量使得程序更易于修改)

(常量有值,另赋值,编译器会抛出错误)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: