NET平台和C#编程北大青鸟学习笔记.docx

上传人:b****6 文档编号:8799108 上传时间:2023-02-01 格式:DOCX 页数:64 大小:625.02KB
下载 相关 举报
NET平台和C#编程北大青鸟学习笔记.docx_第1页
第1页 / 共64页
NET平台和C#编程北大青鸟学习笔记.docx_第2页
第2页 / 共64页
NET平台和C#编程北大青鸟学习笔记.docx_第3页
第3页 / 共64页
NET平台和C#编程北大青鸟学习笔记.docx_第4页
第4页 / 共64页
NET平台和C#编程北大青鸟学习笔记.docx_第5页
第5页 / 共64页
点击查看更多>>
下载资源
资源描述

NET平台和C#编程北大青鸟学习笔记.docx

《NET平台和C#编程北大青鸟学习笔记.docx》由会员分享,可在线阅读,更多相关《NET平台和C#编程北大青鸟学习笔记.docx(64页珍藏版)》请在冰豆网上搜索。

NET平台和C#编程北大青鸟学习笔记.docx

NET平台和C#编程北大青鸟学习笔记

478第一章.NETFramework概述

1、.NETFramework简介

 .NETFramework包含以下两个主要组件:

▲公共语言运行时(CLR)▲统一的类库集

 除了CLR和类库之外,.NETFramework还包括编程语言和ASP.NET。

其中支持.NETFramework的一些编程语言为C#、VC++、VB.NET和Jscript。

2、.NETFramework的组件

.NETFramework由框架类库(FCL)和公共语言运行时(CLR)这两个主要组件组成。

3、C#中常用的命名空间

命名空间用来将具有相关功能的相似类在逻辑上进行分组。

.NETFramework中所有命名空间基本上都是从称为System的公共命名空间形成的,System命名空间又称为根命名空间。

下表是System根下的部分二级命名空间:

命名空间

说明

System.Data

处理数据访问和管理;在定义ADO.NET技术中起重要作用

System.IO

管理对文件和流的同步和异步访问

System.Windows

处理基于窗体的Windows创建

System.Reflection

包含用于从程序集里读取元数据的类

System.Threading

包含用于多线和编写的类

System.Collections

包含不同的接口和类,这些接口和类用来定义不同对象

 

第二章VisualStudio.NET2003

1、C#应用程序文件简介

创建项目后将在“解决方案资源管理器”窗口显示该项目的内容,其中包括这些文件:

▲HelloWorld.csproj:

它是执行应用程序时运行的启动项目。

因此,在方案资源管理顺中,引文件显示为粗体。

▲App.ico:

它是与项目关联的默认空白图标文件。

▲AssemblyInfo.cs:

该文件包含通用程序集信息。

所有程序集属性都放置在些文件中。

▲Class1.cs:

包含类声明的认,也是我们编程中书写代码的主要文件,并且通常我们会将其重新命名。

 

第三章C#基础知识

1、C#的基本数据类型:

C#数据类型

大小

默认值

示例

Int

有符号的32位整数

0

Intrating=20

Float

32位浮点数,精确到小数点后7位

0.0F

Floattemperature=40.6F

Double

64位浮点数,精确到小数点后15~20位

0.0D

DoublepressurePoint=

30000.56641D

Decimal

128位浮点数,精确到小数点后28~29位

0.0M

DecimalcashPaid=1200M

Byte

无符号的8位整数

0

Bytegpa=2;

Short

有符号的16位整数

0

Shortsalary=3400;

Long

有符号的64位整数

0L

Longpopulation=23451900;

Bool

布尔值,true或false

False

BoolIsManager=true;

String

Unicode字符串

-

Stringcolor=”Orange”

char

单个Unicode字符

‘\0’

Chargender=’M’;

▓注意:

对于某些数据(如年龄),只就指定为正数。

这种情况下就应使用无符号数据类型。

例如,uint为无符号整型,ulong为长整型。

2、C#中的变量

访问修饰符数据类型变量名称;

C#语言中的变量按如下方式声明:

数据类型后面是一个名,它应符合下面编码规范。

编码标准:

变量命名

▲内联变量(在方法内声明的变量)必须以骆驼命名法声明,而类变量(也称为成员变量)也必须以骆驼命名法声明,但应以一个下划一开头。

▲不应使用匈牙利命名法(如strName或iCount)命名变量。

▲避免使用单个字符(如“x”或“y”)作为变量名,但for循环中除外。

示例1:

3、C#中的常量

<访问修饰符>const数据类型常量名称=常量值;

常量以const关键字时行声明,后面接C#数据类型之一和赋值语句。

ConstintmaxMarks=100;

例如,

编码标准:

常量命名的规则如下:

▲带有私有访问修饰符的常量必须以骆驼命名法声明,并以一个下划线开头。

▲带有修饰符、受保护修饰符的常量必须以帕斯卡命名法声明。

示例2:

演示如何计算钟摆周期。

▓提示:

示例中的程序用Math类的Sqrt()方法计算平方根。

4、C#中数据类型的分类

C#中的数据类型分为两个基本类别,即值类型和引用类型。

值类型的数据存储在内存的堆栈中,因此,值类型表示实际数据。

引用类型表示指向存储在内存堆中的数据的指针或引用。

值类型和引用类型的基本区别在于它们在内存中的存储方式。

值类型只将值存放在内存中,这些值类型数据都存储在堆栈中。

原始数据类型(如int和bool)都属于此类别。

引用类型的内存单元中只存放内在堆中对象的地址,而对象本身存放在内在堆中。

如果引用类型变量的内容赋值是null,则表示未引用任何对象。

将一个数值类型变量的内容赋值给另一个数据类型变量时,变量值被拷贝。

将一个引用类型变量的内容赋值给另一个引用类型时,只是变量的内存地址被拷贝。

示例3:

演示值类型数据类型的用法。

在Test()方法内修改变量val的值不会反映到Main()方法内。

这是因为int型是一种值类型,将该变量传递给Test()方法时,只传递该变量的副本。

因此,即使在Test()方法内该变量的值改变了,由于它属于值类型,也不会反映到Main()方法内

示例4:

演示引用数据类型的用法

变量Val的值是200,这是因为传递给方法的参数属于object类型。

Object类型属于引用数据类型,因此在传递该参数时,不是传递变量值的副本,而是传递该对象的引用(又称地址)。

在“ReferenceDemo.cs”的Test()方法内所做的修改会反映到Main()方法内

下表总结了值类型和引用类型的一般特点:

特点

值类型

引用类型

变量存放的内容

实际值

引用

内存单元

内联(堆栈)

默认值

0

传递给方法的参数

复制值

复制引用

第四个特点表明,对值类型执行“=”运算将把值复制给目标变量,而对引用类型执行赋值去运算将把对象的引用复制给目标变量。

5、装箱和拆箱

装箱是允许将值类型(如整数)作为引用类型(如对象)进行处理的过程,而拆箱是允许将引用类型作为值类型进行处理的过程。

代码片段1和2演示装箱和拆箱的概念。

Intval=100;

Objectobj=val;

Console.WriteLine(“对象的值={0}”,obj);

代码片段1:

Intval=100;

Objectobj=val;

Intnum=(int)obj;

Console.writeline(“num:

{0}”,num);

这里,int变量val的值被赋给object变量obj。

将值类型(显式或隐式)转换为引用类型的一过程就称为装箱。

代码片段2:

当将val的值赋给obj对象时,不需要进行显式装箱,系统将自动装箱。

但是将obj对象的值赋给num时,则需要进行拆箱,因为obj属于引用类型,而num属于值类型。

6、运算符的分类

一元运算符公一个操作数。

++和--都是C#语言中的一元运算符。

二元运算符用于处理两个操作数。

C#中常用的二元去处符为+、-、*、/和%

表:

前置和后置自加/自减运算符

表达式

类型

计算方法

结果(假定num1的值为5)

Num2=++num1;

前置自加

Num1=num1+1;

Num2=num1;

Num2=6;

Num1=6;

Num2=num1++;

后置自加

Num2=num1;

Num1=num1+1;

Num2=5;

Num1=6;

Num2=--num1;

前置自减

Num1=num1-1;

Num2=num1;

Num2=4;

Num1=4;

Num2=num1--;

后置自减

Num2=num1;

Num1=num1-1;

Num2=5;

Num1=4;

表:

运算符的分类

类别

运算符

说明

表达式

算术运算符

+

用于加法运算(如果两个操作数是字符串,则该去处符用作字符串连接运算符,将一个符串添加到另一个字符串的末尾)

操作数1+操作数2

用于执行减法运算

操作数1-操作数2

*

用于执行乘法运算

操作数1*操作数2

/

用于获得进行除法运算并得到商

操作数1/操作数2

%

用于获得进行除法运算后的余数

操作数1%操作数2

++

用于将操作数加1

操作数1++或++操作数1

--

用于将操作数减1

操作数1――或――操作数1

~

用于将一个数按位取反

~操作数1

比较运算符

>

用于检查一个数是否大于另一个数

操作数1>操作数2

<

用于检查一个数是否小于另一个数

操作数1<操作数2

>=

用于检查一个数是否大于或等于另一个数

操作数1>=操作数2

<=

用于检查一个数是否小于或等于另一个数

操作数1<=操作数2

==

用于检查两个值是否相等

操作数1==操作数2

!

=

用于检查两个值是否不等

操作数!

=操作数2

三元运算符(条件运算符)

?

检查给出的第一个表达式expression是否为真。

如果为真,则运算结果为operand1,否则运算结果为operand2。

这是唯一带有三个操作数的运算符

表达式?

操作数1:

操作数2

赋值运算符

给变量赋值

操作数1=操作数2

逻辑运算符

&&

对两个表达式执行逻辑“与”运算,该运算符用于检查是否两个表达式都为真

操作数1&&操作数2

||

对两个表达式执行逻辑或运算,该运算符用于检查两个表达式中是否至少有一个为真

操作数1||操作数2

对表达式执行逻辑“非”运算。

该运算符用于检查特定表达式取反后是否为真

操作数1

强制转换运算符

()

用于将操作数强制转换为给定的数据类型

(数据类型)操作数

成员访问运算符

.

用于访问数据结构的成员

数据结构或者对象成员

表:

快捷运算符

运算符

计算方法

表达式

求值

结果(假定X=10)

+=

运算结果=操作数1+操作数2

X+=5

X=X+5

15

-=

运算结果=操作数1-操作数2

X-=5

X=X-5

5

*=

运算结果=操作数1*操作数2

X*=5

X=X*5

50

/=

运算结果=操作数1/操作数2

X/=5

X=X/5

2

%=

运算结果=操作数1%操作数2

X%=5

X=X%5

0

7、运算符的优先级

优先级(1为最高级)

说明

运算符

结合性

1

括号

()

从左到右

2

自加/自减运算符

++/--

从右到左

3

乘法运算符

除法运算符

邓模运算符

*

/

%

从左到右

4

加法运算符

减法运算符

+

-

从左到右

5

小于

小于等于

大于

大于等于

<

<=

>

>=

从左到右

6

等于

不等于

=

!

=

从左到右

从左到右

7

逻辑与

&&

从左到右

8

逻辑或

||

从左到右

9

赋值运算符和快捷运算符

=+=*=/=%=-=

从右到左

8、C#中的选择语句

①ifelseC#中if结构的语法如下:

If(表达式)

{

//表达式的计算结果为真时执行的一个或多个语句

}

else

{

//表达式的计算结果为假时执行的一个或多个语句

}

 

在C#中,表达式的计算结果必须为布尔类型。

代码片段3将有助于理解这一点。

Stringval=“hello”;

If(val)

{

Console.WriteLine(“该值为True”);

}

If(val==“hello”)

{

Console.WriteLine(“该值为Trre”);

}

代码片段3:

 

如果编译器遇到第一个if语句,将出现以下错误:

错误CS0029:

无法将”string”类型隐式转换为”bool”类型

由于第一个if语句中的表达式str的计算结果不是一个布尔值,因此出错。

由于第二个if语句的计算结果为True或False,因此该语句未出现任何编译错误。

②switchcaseC#中switch结构的语法为:

Switch(变量)

{

Case值1:

//语句

Break;

Case值2:

//语句

Break;

Case…

//…

Default:

//语句

Break;

}

在C#中,必须为每个case块指定一个跳转语句(如

Goto语句或break语句),否则,将出现编译器错误。

但是,如果case标签堆叠在一起,则不必指定任何

跳转语句,如下所示:

Switch(variable)

{

Case0:

Case1:

//执行某操作;

}

 

在两个case标签之间,可以有一个或多个语句。

不必用大括号将这些语句组合起来。

Default子句用于指定找不到匹配项的情况下将执行的动作。

Switch(weekDay)

{

Case1:

Console.WriteLine(“您已选择星期一”);

Break;

Case2:

Console.WriteLine(“您已星期二”);

Break;

Default:

Console.WriteLine(“默认情况下选择星期日!

”);

Break;

}

代码片段4:

 

9、C#中的循环结构

C#语言中的switch语句与C语言中的swithc语句的一个主要区别在于,前者允许使用string类型的表达式。

与C和Java中的循环结构不同的是,C#中的循环必须包含布尔条件,就像C#的if结构一样,可以在循环中指定一个break语句,便于随时中断循环。

Continue语句可用于跳过当前循环并开始下一循环。

代码片段5:

演示了如何使用break语句和continue语句。

Intcount=0;

Inti=1;

While(true)

{

Cont+=I;

//如果i能被10整除,则此轮循环路过,执行下一轮循环

If(i%10=0

{

Continue;

}

//如果count大于等于100则终止循环

If(count>=100)

{

Break;

}

i++;

}

 

Do

{

//语句

}while(条件)

While(条件)

{

//语句

}

①while循环②do…while循环

 

For(初始值;条件;增/减)

{

//语句

}

③for循环

 

④foreach循环

Foreach(类型元素(变量名)in集合或者数组)

{

//语句

}

Foreach循环一般用于遍历整个集合或数组。

该循环不能用于改变集合或数组的内容。

Foreach结构的语法如下:

 

示例5:

演示如何在C#中声明和使用foreach循环。

示例5中,foreach循环用于遍历用户提供的字符串input。

此循环使用Char结构的内置方法IsLetter()、IsDigit()、IsPunctuation()检查该字符串中的字母、数字和标点符号。

10、数组

数据类型[数组的大小或者容量]变量名;

数组是同一数据类型的一组值。

C#中的数组属于引用类型。

数组声明如下:

Int[6]arrayHere;

代码片段6:

String[]array2;

Array2=newstring[5];

在代码片段6中,整型数组已被声明含有6个元素。

但在C#中,声明数组时是否定义数组大小是可选的。

这意味着数组中的元素个数也可以稍后在程序中指定。

代码片段7:

代码片段8:

演示在数组声明阶段初始化数组

String[]array3={“top”,”down”,”left”,”right”};

数组命名的编码标准:

数组必须以骆驼命名声明。

例如:

string[4]nameArray=newString();

示例6:

演示如何在C#中声明和使用数组

11、结构

类对实现对象很有用。

但是,胃时候需要将一个对象用作一种内置数据类型,以使加快分配,而不会出现过多的引用重载和开销。

C#的结构可以在其内部定义方法。

学习代码片段9以理解此概念。

……

StructStructName

{PublicintstructDataMember;

//结构中显示声明的构造函数必须带有参数

PublicvoidStructMethod(参数列表)

{

//实现

}

}

……

代码片段9:

 

从代码片段9可以看出,StructName结构包含一个方法和一个数据成员。

结构确实具有某些局限性。

结构无法像类一样实现继承。

其次,结构属于值类型,而类属于引用类型。

在C#中,值类型实际上是System命名空间中的结构。

例如,long类型是System.Int64结构的别名。

结构命名的编码标准如下:

▲结构必须以帕斯卡命名法声明。

▲用名词或名词短语作为结构名称。

11、枚举

枚举是一组已听数值常量,它们有助于定义具有一组特定值的数据类型。

假设一个程序只要求接收5个值(如Monday、Tuesday、Wednesday、Thursday和Friday)作为工作日的值。

通过指定一个由这些特定值组成的枚举(如WeekDays),并编写一个只接收此枚举作为参数的方法,就可以实现。

……

PublicclassHoliday

{PublicenumWeekDays

{

Monday,Tuesday,Wednesday,Thursday,Friday

}

PublicvoidGetWeekDays(StringEmpName,WeekDaysDayOff)

{

//处理工作日

}

PublicstaticvoidMain()

{HolidayobjHoliday=newHoliady();

objHoliday.GetWeekDays(“Richie”,Holiday.WeekDays.Wednesday);

}

}

……

代码片段10:

 

C#中的枚举与C中的枚举一样,包含与值关联的数字。

默认情况下,将0值赋给枚举对象的第一个元素,然后对每个后续的枚举元素按1递增。

但是,也可以在初始化阶段将其指定为其他值。

因此,代码片段10可以修改为代码片段11

......

PublicenumWeekDays

{

Monday=1,

Tuesday=2,

Wednesday=3,

Thursday=4,

Friday=5

}

……

代码片段11:

 

枚举命名的编码标准如下:

▲枚举必须以帕斯卡命名法声明▲枚举符中的可选项也必须以帕斯卡命名声明

第四章在C#中实现OOP概念

1、C#的对象和类

[访问修饰符]class<类名>

{

//类的主体

}

类是对一组具有相同属性和行为的对象的描述。

类的内容称为类的成员。

声明类的语法如下:

其中修饰符可以是私有访问修饰符、受保护的访问修饰符、公共访问修饰符或内部修饰符,它是可选的。

▓注意:

不公简单变量(非引用型变量)可以作为类的成员变量,复杂变量(其他的类,引用型变量)也可以作为类的成员变量,也就是说类的成员变量也可以是一个类。

类命名的编码惯例如下:

给类使应使用帕斯卡命名法。

确保类的名称是一个名词。

Customer、Book、User、Employee、Student和UserName等是有效的类名代码片段1显示现实对象Employee声明为一个类。

……

ClassEmployee

{

//类的主体

}

……

代码片段1:

 

类的主体包含成员变量和成员方法。

声明成员变量的语法如下:

[访问修饰符]数据类型成员变量;

编码惯例:

成员变量命名

给公共成员变量、受保护的成员变量或内部成员变量命名应使用帕斯卡命名法。

如Score、Name和Status均为有效的成员变量名。

给私有成员变量命名应使用骆驼命名法,并以下划线开头。

例如_age、_length和_radius等。

代码片段2显示如何声明包含成员变量的类。

……

ClassEmployee

{

Privatestring_name;

Privatechar_gender;

Privatestring_qualification;

Privateuint_salary;

}

……

代码片段2:

 

此时,Employee类包含4个成员变量:

_name、_gender、_qualification和_salary

代码片段3:

显示如何创建对象访问该对象的成员变量

.......

//创建Employee类的对象

EmployeeobjEmployee=newEmployee();

//访问成员变量

objEmployee._name=”张亮影”:

objEmployee._gender=’M’;

objEmployee._salary=5500;

objEmployee._qualification=”ACCPS3”;

…...

 

2、访问修饰符

表:

访问修饰符(从上到下为可访性由大到小)

访问修饰符

说明

Public

可被所属类的成员以及不属于类的成员访问

Internal

可当前程序集访问

Protected

可被所属在或派生自所属类型访问

private

仅所属类的成员才可以访问

PublicstringemName=”张亮影”;//public变量

Protectedbooldepartment//protected变量

PrivateintempCode;//private变量

以下声明说明如何在C#程序中使用访问修饰符。

 

如果对类不指定访问修饰符,则类的默认访问修饰符为internal,但是类成员的默认访问修饰符为private。

3、构造函数和析构函数

[访问修饰符]ClassName()

{

//构造函数的主体

}

代码片段3说明了如何初始化成员变量,但这些变量都是使用点符号来显式初始化的。

有时候可能需要将变量初始化为某个默认值。

例如,大多数公司要求的招聘条件为“大学毕业生”。

在这种情况下,需要有一种机制自动将_qualification变量初始化为默认值“大学毕业生”。

C#提供

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1