.Net是由Microsoft推出的运用递次开辟平台,可用来构建和运转新一代Microsoft Windows和Web运用递次。
2. .Net的中心手艺
.Net Framework:.Net 平台中心中的中心,为.Net 平台下的运用递次的运转供应基本框架。
.Net企业效劳器:微软为企业供应手艺效劳的一部分,包括种种开辟东西包。
构建模块效劳:微软供应的COM+组件效劳和XML Web效劳手艺,运用构建模块效劳开辟运用递次模块,可以敏捷地组装一个功用完全的软件。
Visual Studio.Net : .Net 平台的重要开辟东西
3..Net Framework由差别组件组成,用于支撑竖立和运转基于.NET平台的运用递次。
4..Net Framework框架的底层是Windows支配体系供应的种种运用递次效劳组件,这些组件包括:音讯行列效劳、COM+组件效劳、Internet信息效劳(IIS)、Windows治理东西(WMI)等。
5..Net Framework可以与他们整合以开辟运用递次,在.Net Framework最顶层是递次设想言语, .Net Framework支撑20多种盘算机递次设想言语。在Visual Studio.Net 开辟环境中,可以直接运用VB、C#、C++、J#、Jscript这5种言语开辟任何运用递次。
6..Net Framework具有两个重要组件:大众言语运转时(CLR)和.Net Framework类库,除此之外另有ADO.NET、ASP.NET、XML Web等。
7..Net Framework支撑3种范例的用户界面:
敕令掌握台,用来设想纯字符界面的运用递次
Windows窗体,用来设想Windows界面的运用递次
Web窗体,用来设想Web界面的运用递次
8.ADO.NET是.Net Framework供应的微软新一代的面向对象的数据处置惩罚手艺,运用它可以轻便、疾速地开辟数据库运用递次。
ASP.Net是.Net Framework供应的全新的Web运用递次开辟手艺,运用ASP.NET开辟WEB运用递次犹如开辟Windows运用递次一样简朴。
Xml Web Service是一种可以在Internet环境中直接挪用的组件。.Net Framework供应了竖立、测试和布置XML Web效劳的东西和类。
9.Net Framework为运用递次开辟者供应了一个与平台无关
的开辟环境,运用.Net Framework开辟递次有以下长处:
1. 基于Web的范例
.Net Framework完全支撑现有的Internet手艺和其他Web范例。
2. 运用一致的运用递次模子
任何与.NET兼容的言语都可以运用.Net Framework类库。
3. 易于开辟人员运用
当开辟人员须要挪用.Net Framework类库的类时,只需将该类属性定名空间增添到援用解决方案中即可。
4. 可扩大类
.Net Framework供应了通用范例体系,开辟人员可以经由历程继承来接见类库中的类,也可以扩大类库中的类,以至于构建自身的类库。
C#的上风:(1) C# 是一种准确、简朴、范例平安、面向对象的言语。
(2) C#具有生成耐久体系级组件的才。
(3) C# 运用.Net Framework的通用范例体系可以与其他递次设想言语交互支配。
(4) C#支撑MSMQ(微软音讯行列)效劳、COM+组件效劳、XML Web效劳和.Net Framework 。
(5) C#许可自定义数据范例、以扩大的元数据。
(6) C#加强了开辟效力,同时也坚持了开辟者所须要的天真性。
C#递次的特征:4. C#递次中的要领的构造
C#递次中的一个要领由两部分组成:要领头部和要领体。
要领头部:要领的头部即要领的第1行,包括返回值范例、要领名、形参名及形参范例的申明。
要领体:要领体运用一对大括号“{ }”括起来,平常包括声明语句和实行语句。
5. C#递次的语句
C#递次中的每一个语句必需以分号末端,在誊写时,可以一行誊写几条语句,也可以将一条语句分写在几行上。
6. C#递次的输入与输出支配
C#言语自身没有输入、输出语句,因而C#掌握台运用递次必需借助类库中的Console类的要领(ReadLine、WriteLine等)来完成输入、输出等支配,而C# Windows运用递次和Web运用递次必需借助类库的控件类(如标签、文本框等)来完成输入、输出。
7. C#递次的诠释
可以用“//”或“/*……*/”增添诠释。恰当的增添诠释,可以大大加强递次的可读性。
简朴范例示意一个有唯一取值的数据范例,包括以下4种
范例:1. 整数型2. 浮点型3. 小数型4. 布尔型
float型:取值局限在±1.5e?45 到 ±3.4e38精度为7位
double型:取值局限在±5.0e?324 到 ±1.7e308精度为15到16位
3. 小数型decimal 为满足高精度的财务和金融盘算范畴的须要,C#供应小数型数据范例
取值局限在±1.0?×?10e?28 至 ±7.9?×?10e28精度为28到29位
4. 布尔型(bool)用来示意逻辑真或逻辑假只要两种取值:true(真)或false (假)
5.递次运转历程当中,其值一直不变的量称为常量
1, 整型常量
整形常量分有标记的整型常量、无标记的整型常量和长整型常量
有标记的整型常量直接誊写,如5
无标记整型常量在誊写时增添u或U标志,如5U
长整型常量在誊写时增添l或L标记,如5L
2. 浮点型常量
浮点型常量分单精度浮点型常量和双精度浮点型常量
单精度浮点型常量在誊写时增添f或F标记,如5F
双精度型常量增添d或D标记,如5D
以小数情势直接誊写时,自动被诠释成双精度浮点型常量,如5.0即为双精度浮点型常量。
3. 小数型常量
小数型常量的背面必需增添m或M标记,不然就会被诠释成浮点型数据。
4. 字符型常量 (Unicode字符):
字符型常量运用两个单引号来标记 ,比方’5’、 ’A’、 ’中’、 ’@’
C#的转义字符常量以反斜杠’\’开首,用来示意掌握及不可见的字符,如’\b’示意倒退一个字符。详见课本P26表2-3
5. 布尔型常量
只要两个, true 示意逻辑真,false示意逻辑假。
6. 字符串常量
字符串常量示意多少个Unicode字符组成的字符序列,运用双引号来标记,比方”5”、”abc”、”中国人”。
构造型必需运用struct来标记。
构造型的成员许可包括数据成员、要领成员等
数据成员示意构造的数据项
要领成员示意对数据项的支配。
1. 变量的观点
在递次运转历程当中,其值可以被转变的量称为变量。
变量名:每一个变量都必需有一个名字。变量定名应遵照标识符的定名划定规矩,如必需以字母或下划线打头,只能包括英笔墨母、数字、和下划线,不能包括空格等。
变量值:变量值存储在内存中;差别范例的变量,占用的内存单元(字节)数差别。在递次中,经由历程变量名来援用变量的值。
2. 变量的定义
变量定义的平常情势为:
数据范例 变量名1,变量名2,……;
比方:
int a,b,c; long x,y; float p1,p2;
3.变量的初始化
比方:
float f1=1.25, f2=3.6;
值范例之间的数据可以互相转换,转换的要领有两种,一种是隐式转换,另一种是显式转换。
1. 隐式转换
假如介入运算的数据范例不雷同,则先转换成统一范例,然后举行运算;
转换时按数据长度增添的方向举行,以保证精度不下降,比方int型和long型运算时,先把int数据转成long型后再举行运算;
一切的浮点运算都是以双精度举行的,纵然仅含float单精度量运算的表达式,也要先转换成double型,再作运算;
byte型和short型数据介入运算时,必需先转换成int型;
Char型可以隐式转换为ushort、int、uint、long、ulong、float、double或decimal型,但不存在其他范例到char范例的隐式转换。
2. 显式转换
强迫范例转换的平常情势为:
(范例申明符) (待转换的数据)
比方:(int)(x+y) //把x+y的值强迫转换为int型
注重:上例不可写为(int)x+y,别的经由强迫范例转换后x、y自身的变量范例并不会转变
3. C#还许可运用System.Convert类供应的范例转换要领来转换数据范例
经常使用的转换要领有ToBoolean 、ToByte、ToChar、ToInt32、ToSingle、ToString等
比方
byte x=40,y=5; //定义字节型变量x和y byte z=Convert.ToByte(x+y); //将int型值转换为byte型并赋给byte型变量z char c=Convert.ToChar(z+20); //将int型值转换为char型并赋给char型变量z
C#算术运算符包括+、-、*、/、%、++、--共七种
自增++/自减--运算符
当++或--运算符置于变量的左侧时,称之为前置运算,示意先举行自增或自减运算再运用变量的值,而当++或--运算符置于变量的右侧时,称之为后置运算,示意先运用变量的值再自增或自减运算
比方:设变量i=1、变量j=2,则表达式++i + j-- 的值为4
2. 复合赋值运算符
+=、-=、*=、/=、%=、&=、|=、^=、<<=、>>=
1. 什么是数组
数组是一种由多少个变量组成的鸠合,数组中包括的变量称为数组的元素,它们具有雷同的范例。
数组元素可所以任何范例,包括数组范例。
数组元素的个数称为数组的长度,数组长度为0时称数组为空数组。
数组元素没有称号,只能经由历程索引来接见,索引从零最先。
具有 n 个元素的数组的索引是从 0 到 n-1。
C#支撑一维数组和多维数组。
2. 数组的声明和竖立
C#中的数组是一个对象,所以运用new运算符来竖立
声明和竖立一维数组的平常情势:
数组范例[ ] 数组名 = new 数组范例[数组长度];
如:
int[ ] numbers=new int[5]; //竖立具有5个元素的一维数组numbers
声明和竖立多维数组的平常情势:
数组范例[逗号列表] 数组名 = new 数组范例[数组长度列表]
如:
int[,,] numbers=new int[5,4,3]; //竖立一个三维数组numbers
3. 数组的初始化
(1)在竖立数组时初始化
竖立一维数组时初始化的平常情势为:
数组范例[ ] 数组名 = new 数组范例[数组长度]{初始值列表};
如:
int[ ] numbers=new int[ ]{1,2,3,4,5} ;//当省略数组长度时,则给出的数据个数即为数组长度
上例中numbers[0]=1,……,numbers[4]=5
在竖立并初始化数组时,还可采纳简写情势:
数组范例[ ] 数组名 ={初始值列表}
如
int[ ] numbers={1,2,3,4,5} ;
3. 数组的初始化
(2)在声明一维数组后初始化数组
在声明后初始化一维数组的平常情势为:
数组范例[ ] 数组名;
数组名 = new 数组范例[数组长度]{初始值列表};
如:
int[ ] numbers; numbers = new int[ ]{1,2,3,4,5} ;
注重在先声明后初始化时,不能采纳简写情势,比方:
int[ ] numbers; numbers = {1,2,3,4,5} ;
是毛病的
4. 数组的运用:
每一个数组元素相当于一个一般变量,运用数组元素的平常情势为:
数组名[索引]
C#的数组范例是从笼统基范例System.Array派生的援用范例, System.Array类供应的Length属性可以用来获得数组的个数。
别的System.Array供应了Clear、CopyTo、Find、Resize、Sort等要领,用于消灭数组元素的值、复制数组、搜刮数组、变动数组长度和对数组元素排序等。
5.System.String与 System.Text.StringBuilder
C#的string 是.NET Framework中System.String 的别号,可竖立不可变的字符串。其供应的经常使用属性和要领有Length、Copy、IndexOf、LastIndexOf、Insert、Remove、Replace、Split、Substring、Trim等,离别用来获得字符串长度、复制字符串、从左查找字符、从右查找字符、插进去字符、删除字符、替换字符、支解字符串、取子字符串、紧缩字符串的空缺等。
System.Text.StringBuilder类用来构造可变字符串,包括Length、Append、Insert、Remove、Replace、ToString等成员,离别用来获得字符串长度、追加字符、插进去字符、删除字符、替换字符和将StringBuilder转换为string字符串。
对象(Object),是题目域中某些事物的一个笼统,反应事物在体系中须要保留的必要信息和发挥的作用,是包括一些迥殊属性(数据)和效劳(行动要领)的封装实体。
细致来说,对象应有唯一的称号、有一系列状况(示意为数据)、有示意对象行动的一系列行动(要领),如右图所示。
对象=数据+行动(要领/支配)
1. 事宜(Event)
又称音讯(Message)示意向对象发出的效劳请求。
2. 要领(Method)
示意对象能完成的效劳或实行的支配功用。
类(Class)是具有雷同属性和效劳的一组对象的鸠合
类为属于同类的一切对象供应一致的笼统形貌。个中,雷同的属性是指定义情势雷同,不是指属性值雷同。
对象是类的一个实例。
类与实例的关联是笼统与细致的关联,类是多个实例的综合笼统,实例是类的个别什物。
面向对象的最基本的特征是封装性、继承性和多态性:
1. 封装
封装就是指把对象的悉数属性和悉数效劳连系在一同组成一个不可支解的自力单元。
封装是一种信息隐蔽手艺,用户只能见到对象封装界面上的信息,对象内部对用户是隐蔽的。
封装的目的在于将对象的运用者与设想者脱离,运用者没必要相识对象行动的细致完成,只须要用设想者供应的音讯接口来接见该对象。
比方,种种有范例视频接口的装备都可以衔接电视机。
2.继承
迥殊类的对象具有其平常类的悉数属性与效劳,称作迥殊类对平常类的继承,即在迥殊类中没必要从新定义已在平常类中定义过的属性和效劳,这类特征在面向对象中称作对象的继承性。
继承在C#中称为派生,个中,平常类称为基类或父类,迥殊类称为派生类或子类。
比方灵长类动物称为平常类,具有属性包括手和脚(别的动物没有),具有的效劳是抓取东西(别的动物没有),人类作为迥殊的灵长类高等动物,除了继承灵长类动物的一切属性和效劳外,还具有迥殊的效劳(制造东西)。
继承机制的上风在于下降了软件开辟的庞杂性和用度,使软件体系易于扩大
3. 多态
多态性是指在基类中定义的属性或效劳被派生类继承后,可以具有差别的数据范例或表现出差别的行动。
为了完成多态性,须要在派生类中变动从基类中自动继承来的数据范例或要领。
这类为了替换基类的部分内容而在派生类中从新举行定义的支配,在面向对象观点中称之为掩盖。
比方,假定机动车类是一个基类,它具有一个称为替换轮胎的要领,然则当从机动车派生火车类时,火车更话车轮的要领与平常的机动车差别,因而只能经由历程掩盖的要领在火车类中从新定义一个替换车轮的要领,以替换其基类的要领。
多态性的上风在于使软件开辟越发轻易,增添递次的可读性。
类的常量成员是一种标记常量,必需指定称号和值
接见修饰符包括:public、private、internal、protected、protected internal。
在运用接见修饰符来定义定名空间、构造和类及其成员
时,需注重:
(1)一个成员或范例只能有一个接见修饰符,运用protected internal组应时除外。
(2)定名空间上不许可运用接见修饰符,定名空间没有接见限定。
(3)假如未指定接见修饰符,则运用默许的可接见性,类成员默许为private。
(4)顶级范例(不嵌套在其他范例中的范例)的可接见性只能是internal或public,默许可接见性是internal。
定义要领的细致申明
(1) 接见修饰符掌握要领的接见级别,可用于要领的修饰符包括:public、protected、private、internal等等。
(2) 要领的返回值范例可所以任何正当的数据范例,包括值范例和援用范例。当无返回值时,返回值范例运用void症结字来示意。
(3) 要领名必需相符C#的定名范例,与变量名定名划定规矩雷同。
(4) 参数列表是要领可以吸收的输入数据。当要领不须要参数时,可省略参数列表,但不能省略圆括号。当参数不止一个时,须要运用逗号作间隔,同时每一个参数都必需声明数据范例,纵然这些参数的数据范例雷同也不破例。
(5) 花括号{}中的内容为要领的主体,由多少条语句组成,每一条语句都必需运用分号末端。当要领完毕时假如须要返回支配结果,则运用return语句返回,此时要注重return语句返回的值的范例要与要领返回值范例相婚配。假如要领运用void标记为无返回值的要领,可省略return语句。
1. 值范例参数
挪用方向要领通报值范例参数时,挪用方将把实参变量的值赋给相对应的形参变量,即实参变量和形参变量是两个不雷同的变量。
实参变量的值通报给形参变量时是一种单向值通报。
援用型参数
与值参数差别,挪用方向要领通报援用范例参数时,挪用方将把实参变量的援用赋给相对应的形参变量。实参变量的援用代表数据值的内存地址,因而,形参变量和实参变量将指向统一个援用。
假如在要领内部变动了形参变量所援用的数据值,则同时也修正了实参变量所援用的数据值。
由于运用return语句一次只能返回一个数据,假如须要返回多个数据,则可以运用援用型参数的这个特征来完成。
C#经由历程ref症结字来声明援用参数,不管是形参照样实参,只需愿望通报数据的援用,就必需增添ref症结字。
输出参数
要领中的return语句只能返回一个运算结果,虽然也可以运用援用型参数返回盘算结果,但请求先初始化实参。
而输出参数不须要对实参举行初始化,它特地用于把要领中的数据经由历程形参返回给实参,但不会将实参的值通报给形参。一个要领中可许可有多个输出参数。
C#经由历程out症结字来声明输出参数,不管是形参照样实参,只需是输出参数,都必需增添out症结字。
数组型参数
把数组作为参数,有两种运用情势:
一种是在形参数组前不增添params修饰符
另一种是在形参数组前增添params修饰符。
两种情势的区分
不增添params修饰符时,所对应的实参必需是一个数组名。
增添params修饰符时,所对应的实参可所以数组名,也可所以数组元素值的列表。
值得注重的是,不管采纳哪种情势,形参数组都不能定义数组长度。
要领的重载
要领的重载是指在统一个范例中,以一样的称号声明两个或多个要领。当须要以差别的参数列表实行一样的支配时,要领重载将会很有用。
2. 析构函数的特征:
(1) 不能在构造中定义析构函数,只能对类运用析构函数;
(2) 一个类只能有一个析构函数;
(3) 没法继承或重载析构函数;
(4) 析构函数既没有修饰符,也没有参数;
(5) 在析构函数被挪用时,.Net Framework的CLR自动增添对基类Object.Finalize要领的挪用以清算现场,因而在析构函数中不能包括对Object.Finalize要领的挪用。
注重,在默许状况下,编译器自动生成空的析构函数,因而C#不许可定义空的析构函数
1. 静态类的定义:
静态类运用static症结字来声明,表明它仅包括静态成员。
不能运用new症结字竖立静态类的实例 。
在现实运用中,当类中的成员不与特定对象关联的时刻,就可以把它竖立为静态类。
2. 静态类的重要功用:
(1) 静态类仅包括静态成员;
(2) 静态类不能被实例化;
(3) 静态类是密封的;
(4) 静态类不能包括实例构造函数。
3. 静态类的长处:
(1) 编译器可以自动实行搜检,以确保不增添实例成员;
(2) 静态类可以使递次的完成更简朴、敏捷,由于没必要竖立对象就可以挪用其要领。
注重:由于静态类是密封的,因而不可被继承。别的,静态类不能包括实例构造函数,但仍可以声明静态构造函数,以分派初始值或设置某个静态状况。
(1) 派生类的特征
可以具有自身的成员。
可以隐式地从基类继承一切成员,包括要领、字段、属性和事宜,但私有成员、构造函数和析构函数等除外。
派生类只能从一个类中继承
密封类
运用密封类可以阻挠一个类的代码被其他类继承
运用密封类的优点:
可以进步运用递次的可靠性和机能(在.NET Framework大众言语运转时CLR中,加载密封类时将对密封类的要领挪用举行优化)。
软件企业经由历程运用密封类还可以把自身的知识产权庇护起来,防备别人同享代码。
在C#中,增添症结字sealed可以声明密封类。
4.为了运用派生类能变动基类的数据和行动,C#供应了两种挑选:1.运用新的派生类成员替换基成员2. 重写假造的基成员
运用virtual和override时要注重以下几点:
(1)字段不能是假造的,只要要领、属性、事宜和索引器才可所以假造的;
(2)运用virtual修饰符后,不许可再运用static、abstract或override修饰符;
(3)派生类对象纵然被强迫转换为基类对象,所援用的仍然是派生类的成员;
(4)派生类可以经由历程密封来住手假造继承,此时派生类的成员运用sealed override声明。
笼统类的特征:
笼统类是用来作为基类的,不能直接实例化,而且只能运用abstract症结字来标识。笼统类的用处是供应多个派生类可同享的基类的大众定义。
笼统类可以包括笼统的成员,如笼统属性和笼统要领,也可以包括非笼统的成员,以至还可以包括虚要领。
笼统属性的特征
类的属性成员增添了abstract症结字后,就成了笼统属性。
笼统属性声明不供应属性接见器的完成,它只声明该类支撑的属性,而将接见器的完成留给派生类。
笼统属性一样可所以只读的、只写的或可读写的属性。
当派生类从笼统类中继承一个笼统属性时,派生类必需重载该笼统属性。
笼统属性运用abstract症结字来标识
笼统要领的特征:
类的要领成员增添abstract症结字后,就成为笼统要领。
笼统要领声明不供应要领的完成,它必需是一个空要领,而将要领完成留给派生类。
当派生类从笼统类中继承一个笼统要领时,派生类必需重载该笼统要领。
由于笼统要领没有完成,因而,笼统要领不包括通例的要领体,以分号末端。
1.托付(delegate)是一种援用要领的范例,它与类、接口和数组雷同,属于援用型。
在C#递次中,可以声明托付范例、定义托付范例的变量、把要领分派给托付变量,还可以经由历程托付来间接地挪用一个或多个要领。
一旦为托付分派了要领,托付将与该要领具有完全雷同的行动。
C#许可把任何具有雷同署名(雷同的返回值和参数)的要领分派给托付变量。
托付的实质是代表要领的援用(即内存地址),是定义回调要领的抱负挑选,也是C#完成事宜驱动的编程模子的重要门路。
托付具有以下特征:
(1)托付类似于 C++ 函数指针,是完全面向对象的,是平安的数据范例。
(2)托付许可将要领作为参数举行通报。
(3)托付可用于定义回调要领。
(4)托付可以链接在一同。比方,可以对一个事宜挪用多个要领。
(5)托付署名不须要与要领准确婚配。
鸠合是经由历程高度构造化的体式格局存储恣意对象的类,与没法动态调解大小的数组比拟,鸠合不仅能随便调解大小,而且对存储或检索存储在个中的对象供应了更高等的要领。
鸠合可以把一组类似的范例化对象组合在一同。
挑选鸠合类时,平常要斟酌以下题目:
(1)是不是须要一个序列列表,须要先进先出行动时可运用 Queue 行列类,在须要后进先出行动时可运用 Stack栈类。
(2)是不是须要随机接见鸠合中的元素,此时不能挑选Queue 行列类、Stack栈类、LinkedList 双向链表类。
(3)是不是须要经由历程索引接见每一个元素,只要ArrayList动态数组类、StringCollection字符串鸠合类等是从索引为零的元素最先逐一接见鸠合元素。Hashtable哈希表、Dictionary字典类经由历程元素的键(即元素名字)供应对元素的接见。而NameValueCollection 类和SortedList 泛型类经由历程其元素的从零最先的索引,或许经由历程其元素的键供应对元素的接见。
(4)是不是包括一个值、一个键和一个值的鸠合,照样一个键和多个值的鸠合。个中,“一个值”的鸠合是一种基于 IList 列表接口派生的鸠合,“一个键和一个值”的鸠合是一种基于IDictionary字典接口的鸠合,“一个键和多个值”的鸠合是 NameValueCollection 类。
(5)是不是须要用与输入元素体式格局差别的体式格局对元素排序。Hashtable 哈希表类按其元素的哈希代码对元素排序,SortedList有序表类以及 SortedDictionary有序字典依据 IComparer 可比较接口来完成按键对元素的排序,而ArrayList动态数组类供应 Sort 排序要领。
(6)是不是须要信息的疾速搜刮和检索,关于小鸠合(10个元素或更少),ListDictionary 比 Hashtable 快,SortedDictionary 泛型类供应比 Dictionary 泛型类更快的查找。
(7)是不是须要只吸收字符串的鸠合,如运用StringCollection和 StringDictionary等。
动态数组类ArrayList不限定元素的个数和数据范例。
(1) ArrayList与Array的区分
Array 的大小是牢固的,而 ArrayList的大小可依据须要自动扩大;
在Array中一次只能猎取或设置一个元素的值,而在ArrayList中许可增添、插进去或移除某一局限的元素;
Array 的下限可以自定义,而ArrayList的下限一直为零;
Array 可以具有多个维度,而 ArrayList一直只是一维的;
Array 位于 System 定名空间中,ArrayList 位于 System.Collections 定名空间中。
(2) 竖立动态数组:
ArrayList 列表对象名 = new ArrayList(?);
行列的特征
一种先进先出的数据构造,当插进去或删除对象时,对象从行列的一端插进去,从别的一端移除
竖立行列对象
Queue 行列名 = new Queue([行列长度][,增进因子]);
申明,行列长度默许为32,增进因子默许为2.0(即每当行列容量不足时,行列长度调解为本来的2倍)
注重,由于调解行列的大小须要支付肯定的机能价值,因而发起在构造行列时指定行列的长度。
经常使用行列支配要领包括Enqueue向队尾增添数据、Dequeue移除队头数据、Peek返回队头数据、Clear清空行列和Contains搜检是不是包括某个数据等。个中,Enqueue和Dequeue每支配一次只能增添或删除一个数据。
栈的特征:
一种先进后出的数据构造,这类数据构造在插进去或删除对象时,只能在栈顶插进去或删除。
竖立栈对象:
Stack 栈名 = new Stack(?);
栈经常使用要领包括Push在栈顶增添数据、Pop移除栈顶数据、Peek返回栈顶数据、Clear清空栈和Contain搜检是不是包括某个数据等。个中,Push和Pop每支配一次只能增添或删除一个数据。
哈希表又称散列表,示意键/值对的鸠合。
哈希表的特征:在保留鸠合元素时,起首要依据键自动盘算哈希代码,以肯定该元素的保留位置,再把元素的值放入相应位置所指向的存储桶中。查找时,再次经由历程键所对应的哈希代码到特定存储桶中搜刮。如许可以大大削减为查找一个元素举行的比较次数。
竖立哈希表对象
Hashtable 哈希表名 = new Hashtable([哈希表长度][,增进因子]);
申明,默许长度为0,默许增进因子为1.0
哈希表经常使用支配要领包括Add增添数据、Remove移除数据、Clear清空哈希表和Contains搜检是不是包括某个数据等。个中, Add要领须要两个参数,一个是键,一个是值;Remove要领只须要一个键名参数。
接口索引器与类索引器的区分有两个:
一是接口索引器不运用修饰符;
二是接口索引器只包括接见器get或set,没有完成语句。
竖立自定义的泛型类时,须要迥殊注重以下事项:
(1)将哪些范例通用化为范例参数
平常划定规矩是:可以参数化的范例越多,代码就会变得越天真,重用性就越好,但太多的通用化会使其他开辟人员难以阅读或明白代码。
(2)假如存在束缚,应对范例参数运用什么束缚
平常划定规矩是:运用尽量最多的束缚,但仍可以处置惩罚须要处置惩罚的范例。比方,假如晓得泛型类仅用于援用范例,则运用类束缚。这可以防备泛型类被意外埠用于值范例。
(3)是不是将泛型行动分解为基类和子类
由于泛型类可以作为基类运用,其注重事项与非泛型类雷同。
(4)是不是完成一个或多个泛型接口。
事宜处置惩罚体系的组成要素
(1) 事宜源:指能触发事宜的对象,偶然又称为事宜的发送者或事宜的宣布者;
(2) 侦听器:指能吸收到事宜音讯的对象,Windows供应了基本的事宜侦听效劳;
(3) 事宜处置惩罚递次:当事宜发作时对事宜举行处置惩罚,又称事宜函数或事宜要领,包括事宜处置惩罚递次的对象称为事宜的吸收者,又称事宜的定阅者。
C#中的事宜具有以下特征:
(1) 事宜是类用来关照对象须要实行某种支配的体式格局;
(2) 只管事宜在其他时刻(如信号状况变动)也很有用,但平常照样用在图形用户界面中;
(3) 事宜平常运用托付事宜处置惩罚递次举行声明;
(4) 事宜可以挪用匿名要领来替换托付。
1. 事宜的基本观点
触发事宜的对象称为宣布者,供应事宜处置惩罚递次的对象称为定阅者。在.NET Framework中,基于事宜驱动的递次运用托付来绑定事宜和事宜函数,在C#中,事宜现实上就是一个托付范例的变量。
C#许可运用内置的EventHandler托付范例来声明一个范例的事宜,也许可先自定义托付,再声明自定义事宜。
在.NET Framework中,内置的EventHandler托付具有两个参数,它们的数据范例离别是Object和EventArgs范例,而且没有返回值。
Object参数名平常为sender,示意事宜宣布者自身;EventArgs参数平常为e,它将System.EventArgs类的新实例通报给事宜函数。在现实编程中,偶然须要从EventArgs类派生自定义事宜参数类,如许宣布者可以将特定的数据发送给吸收者的事宜函数。
事宜的声明
(1) 运用内置的EventHandler托付声明事宜的情势(范例事宜)
花样:public event EventHandler 事宜名;
个中,事宜名平常运用on作为前缀符。
比方,public event EventHandler onClick;
(2) 运用自定义的托付范例声明事宜
花样:public delegate 返回值范例 托付范例名([参数]);
public event 托付范例名 事宜名;
个中,托付范例的参数非常天真,可以省略,可所以范例的Object参数和EventArgs参数,也可所以其他参数,但肯定要注重保证与事宜函数的参数婚配。
在定阅事宜时要把握好以下几点:
(1)起首吸收类必需具有与事宜自身具有雷同署名(雷同返回值范例和参数)的要领,然后该要领(称为事宜处置惩罚递次)可以采用恰当的支配来相应该事宜。
(2) 每一个事宜可有多个处置惩罚递次,多个处置惩罚递次按递次挪用。假如一个处置惩罚递次激发非常,还未挪用的处置惩罚递次则没有时机吸收事宜。基于这个缘由,发起事宜处置惩罚递次敏捷处置惩罚事宜并防备激发非常。
(3) 若要定阅事宜,吸收器必需竖立一个与事宜具有雷同范例的托付,并运用事宜处置惩罚递次作为托付目的,还要运用加法赋值运算符 (+=) 将该托付增添到源对象的事宜中。
(4) 若要作废定阅事宜,吸收器可以运用减法赋值运算符(?=)从源对象的事宜中移除事宜处置惩罚递次的托付。
1. Windows窗体
Windows窗体是运用C#来竖立基于窗口运用递次的起点。不过,从窗体自身来看,它只是一个可挪动的界面罢了。虽然用户可以直接在窗体上绘制对象和文本,然则窗体的真正作用是充任Windows控件的容器。
控件的实质就是窗体的成员对象,用于显现信息而且吸收用户输入的信息。
2. Windows窗体定名空间
Windows窗体的基类是Form,在System.Windows.Forms定名空间中定义.
.NET中的大多数控件都派生于System.Windows.Forms.Control类,该类定义了控件的基本功用。
.NET Framework中的窗体控件
数据显现 DataGridView
数据绑定和定位 BindingSource、BindingNavigator
文本编辑 TextBox、RichTextBox、MaskedTextBox
信息显现 Lable、StatusStrip、ProgressBar
网页显现 WebBrowser
列表与挑选 CheckBox、CheckedListBox、ComboBox、RadioButton、ListBox、ListView、NumericUpDown、TreeView、DomainUpDown、TrackBar、
图形显现 PictureBox、ImageList
日期设置 DateTimePicker、MonthCalendar
对话框 ColorDialog、FontDialog、OpenFileDialog、PrintDialog、PrintPreviewDialog、FolderBrowerDialog、SaveFileDialog
敕令 Button、LinkLabel、NotifyIcon、ToolStrip
菜单 MenuStrip、ContextMenuStrip
用户协助 HelpProvider、ToolTrip
将其他控件分组 Panel、GroupBox、TabControl、SplitContainer、TableLayoutPanel、FlowLayoutPane
控件的属性
属性称号 申明
Anchor 猎取或设置控件绑定到的容器的边沿并肯定控件怎样随其父级一同调解大小
BackColor 控件的背景色
Bottom 控件下边沿与其容器的事情区上边沿之间的间隔(单元:像素)
Dock 猎取或设置控件边框停靠到其父控件并肯定控件怎样随其父级一同调解大小
Enabled 控件是不是可以对用户交互作出相应
ForeColor 控件的前景色
Height 控件的高度
Left 控件左侧缘与其容器的事情区左侧缘之间的间隔(单元:像素)
Location 控件的左上角相干于其容器的左上角的坐标。
Name 控件的称号,这个称号可以在代码中用于援用该控件。
Parent 控件的父容器
Right 控件右侧缘与其容器的事情区左侧缘之间的间隔(单元:像素)
Size 控件的高度和宽度
TabIndex 控件的 Tab 键递次
TabStop 指导用户可否运用 Tab 键将核心放到该控件上。
Text 与此控件关联的文本
Top 控件上边沿与其容器的事情区上边沿之间的间隔(单元:像素)
Visible 指导是不是显现该控件
Width 控件的宽度
按钮控件
Button(按钮)控件位于.NET Framework的System.Windows.Forms定名空间,它是从基类ButtonBase派生的。基类ButtonBase用于完成按钮控件所需的基本支配。
Button控件是一种经常使用控件,在须要用户做“肯定”或“作废”之类的挑选,平常都运用Button控件。 Button控件支撑鼠标的单击和双击支配,也可以用<Enter>键来举行支配。
在设想时,平常在窗体上增添控件,然后双击它,为Click事宜编写代码即可。在实行递次时,单击该按钮就会实行Click事宜中的代码。
Name属性:用于设置对象的称号,以便在代码中援用。
体系自动给Button控件定名button1、button2……
最好给Name属性设置一个有现实意义的称号。
种种控件对象的Name属性只能经由历程“属性”窗口变动,该属性在设想时有用,运转时为只读。
Text属性:以文本情势显现在按钮上的题目笔墨。
除单击按钮外,还可以给按钮定义“Alt+疾速键”,见P155图7-2。
定义要领,在疾速键字母前面加上一个“&”字符。
比方:button1.Text = “肯定(&Y)”; //显现题目为“肯定(Y)”
Visible属性:决议该按钮是不是可见
属性值为true可见,为false隐蔽。
当一个控件不可见时,则不能响运用户的鼠标和键盘支配。
Visible属性在运转时见效。
Enabled属性:决议该按钮是不是有用
属性值为false时按钮笔墨以灰色显现,对用户的支配不相应。
FlatStyle属性:决议该按钮的款式,值为FlatStyle罗列型
FlatStyle罗列型有4个罗列值,离别为Flat(平面显现)、Popup(平面显现,但鼠标移到时表面为三维)、Standard(三维显现)、System(表面由操组体系决议),结果见P156图7-3。
Button控件的FlatStyle属性默许为Standard。
Image属性:指定一个在按钮上显现的图象
ImageAlign属性:设置图象在按钮上的对齐体式格局
标签控件
作用:重要用于在窗体上显现文本
控件名:
Label:范例的Windows标签;
LinkLabel:类似于Label,但以超链接体式格局显现 ,结果见图7-4。
平常状况下,不须要为Label控件增添事宜处置惩罚代码,但在须要时也可以支撑事宜
标签控件的经常使用属性
属性称号 申明
BorderStyle 控件的边框款式,默许为无边框
FlatStyle 设置平面款式表面。假如设置为PopUp,示意平面款式,当鼠标指向它时,控件显现为弹起款式。
Image 显现在 Label 上的图象
ImageAlign 控件中显现的图象的对齐体式格局
LinkArea 文本中显现为链接的局限(只用于LinkLabel)
LinkColor 显现一般链接时运用的色彩(只用于LinkLabel)
Links 猎取包括在 LinkLabel 内的链接的鸠合 (只用于LinkLabel)
LinkVisited 链接是不是显现为犹如被接见过的链接(只用于LinkLabel)
TextAlign? 标签中文本的对齐体式格局
VisitedLinkColor 显现之前接见过的链接时所运用的色彩(只用于LinkLabel)
文本框控件
.NET FrameWork内置两个文本框控件: TextBox控件和RichTextBox控件,它们都派生于TextBoxBase,而TextBoxBase派生于Control类。
TextBoxBase供应了在文本框中处置惩罚文本的基本功用,比方挑选文本、剪贴、粘贴和相干事宜。
TextBox用处重如果让用户输入文本,也可以指定用户输入字符的范例,如只许可数值。默许状况下一个文本框最多输入2048个字符。假如将Multiline属性设为true,则最多可输入32k文本。用户文本保留在Text属性中,在递次中援用Text属性即可获得用户输入的文本。
RichTextBox多用于显现和输入花样化的文本(TextBox经常使用于录入较短的文本字符), RichTextBox可以显现字体、色彩和链接,从文件加载文本和加载嵌入的图象,及查找指定的字符, RichTextBox也被称为加强的文本框。
TextBox控件
属性称号 申明
CausesValidation? 是不是考证用户输入的有用性
CharacterCasing 是不是在字符键入时修正其大小写花样
MaxLength? 设置能输入的最大字符数,假如=0,则不受限定
Multiline 是不是可以显现多行文本
PasswordChar 设置暗码显现字符
ReadOnly? 文本是不是为只读
ScrollBars 猎取或设置哪些滚动条应涌现在多行 TextBox 控件中
SelectedText? 示意当前选定的文本
SelectionLength? 当前选定的字符数
SelectionStart? 当前选定的文本起始点
Text 当前文本
WordWrap? 是不是自动换行
事宜称号 申明
Enter? 进入控件时发作这4个事宜按列出的递次触发,它们被称为“核心事宜”,当控件的核心转变时触发,但Validating和Validated仅在控件吸收了核心且其CausesValidation设置为true时实被触发
Leave? 在输入核心脱离控件时发作
Validating? 在控件正在考证时发作
Validated? 在控件完成考证时发作
KeyDown 这3个事宜统称为“键事宜”,用于看管和转变输入到控件中内容,KeyDown和KeyUp?吸收与所按下键对应的键码,可以来肯定是不是按下了迥殊了键,如Shift、Ctrl或F1。KeyPress吸收与键对应的字符
KeyPress
KeyUp?
TextChanged? 只需文本框中的文本发作了转变,就会触发该事宜
RichTextBox控件
属性称号 申明
CanRedo? 指导在 RichTextBox 内发作的支配中是不是有可以从新运用的支配
CanUndo? 指导用户在文本框控件中可否取消前一支配
DetectUrls 当在控件中键入某个URL时,RichTextBox 是不是自动设置 URL 的花样
Rtf 与Text属性相类似,但可包括RTF 花样的文本
SelectedRtf 猎取或设置控件中当前挑选的 RTF 花样的花样化文本
SelectedText 猎取或设置 RichTextBox 内的选定文本
SelectionAlignment 选定内容或插进去点的对齐体式格局,可以取值为Cente、Left或Right
SelectionBullet? 指导项目的记款式是不是运用到当前选定内容或插进去点
BulletIndent? 指定项目的记的缩进像素值
SelectionColor 猎取或设置当前选定文本或插进去点的文本色彩
SelectionFont 猎取或设置当前选定文本或插进去点的字体
SelectionLength? 猎取或设置控件中选定的字符数
ShowSelectionMargin 假如把这个属性设置为true,在RichTextBox左侧就会涌现一个页边距,轻易挑选文本
UndoActionName 猎取挪用 Undo要领后在控件中可取消的支配称号
SelectionProtected 把这个属性设置设置为true,可以指定不修正文本的某些部分
RadioButton控件
属性称号 申明
Appearance 猎取或设置一个值,该值用于肯定 RadioButton 的表面。
可选值:Normal和Button。每种范例都可显现文本或图象,或同时显现两者。
挑选Normal后的表面: 。挑选Button后的表面:
AutoCheck 假如这个属性为true,用户单击单选按钮时,会显现一个选中标记。假如该属性为false,就必需在Click事宜处置惩罚递次的代码中手工搜检单选按钮
CheckAlign 转变单选按钮的复选框的对齐情势,值可为罗列ContentAlignment 有用值之一。默许值为 MiddleLeft,意为内容在垂直方向上中心对齐,在程度方向上左侧对齐
Checked 猎取或设置一个值,该值指导是不是已选中控件。假如选中控件,它就是true,不然为false
GroupBox控件
GroupBox (分组框)控件用于为其他控件供应可辨认的分组。 平常,运用分组框按功用细分窗体。
当挪动单个GroupBox控件时,它包括的一切控件也会一同挪动。
在窗体上竖立GroupBox控件及其内部控件时,必需先竖立GroupBox控件,然后在其内竖立种种控件。
Panel控件
Panel (面板)控件类似于GroupBox 控件。两者的区分在于,只要GroupBox 控件能显现题目,只要Panel 控件可以有滚动条 。
若要显现滚动条,需将 AutoScroll 属性设置为 true 。
可以经由历程设置 BackColor、BackgroundImage 和 BorderStyle 属性自定义面板的表面 。
TabControl控件
属性称号 申明
Alignment 掌握选项卡在控件中的显现位置,默许为控件的顶部
Appearance 掌握选项卡的显现体式格局,选项卡可以显现为平常的按钮或带有平面的款式
HotTrack 如为true,则当鼠标指针移过控件上的选项卡时,其表面就会转变
Multiline 如为true,则可以以多行显现选项卡
RowCount 返回当前显现的选项卡行数
SelectedItem 猎取或设置当前选定的选项卡页的索引
SelectedTab 猎取或设置当前选定的选项卡页,该属性在TabPages的实例上运用
TabCount 猎取选项卡条中选项卡的数量。
TabPages 猎取该选项卡控件中选项卡页的鸠合,运用这个鸠合可以增添和删除TabPages对象
StatusStrip 控件中窗格的经常使用属性
属性称号 申明
AutoSize 是不是基于项的图象和文本自动调解项的大小
Alignment 设定StatusStrip控件上窗格的对齐体式格局,可选项包括:Center、Left和Right
BorderStyle 设定窗格边框的款式,可选项以下:
None:不显现边框; Raised:窗格以三维突出体式格局显现;Sunken:窗格以三维凹起体式格局显现
Image 设定窗格显现的图标
MinimumSize 设定窗格在状况栏中的最小宽度
Spring 指定项是不是填满盈余空间
Text 设定窗格的显现文本
Width 设定窗格的宽度,取决于AutoSize属性的设置,当窗体大小转变时该属性值能够会随之变化
Show要领将返回一个DialogResult罗列值指导对话框的返回值
成员 申明
Abort 对话框的返回值是 Abort(平常从标签为“中断”的按钮发送)?
Cancel 对话框的返回值是 Cancel(平常从标签为“作废”的按钮发送)?
Ignore 对话框的返回值是 Ignore(平常从标签为“疏忽”的按钮发送)?
No 对话框的返回值是 No(平常从标签为“否”的按钮发送)?
None 从对话框返回了 Nothing。这表明有形式对话框继承运转?
OK 对话框的返回值是 OK(平常从标签为“肯定”的按钮发送)?
Retry 对话框的返回值是 Retry(平常从标签为“重试”的按钮发送)?
Yes 对话框的返回值是 Yes(平常从标签为“是”的按钮发送)?
驱动器
.NET Framework供应DriveInfo类和DriverType罗列型,以轻易在递次中直接运用驱动器。 DriveInfo类和DriverType罗列型位于System.IO定名空间。
DriveInfo类
作用:肯定有关驱动器的信息,包括驱动器盘符、驱动器范例、驱动器上的可用空间等
经常使用成员:
字段:DriveFormat(文件体系花样,如NTFS或FAT32)、DriveType(驱动器范例)、Name(驱动器名)、TotalSize(总空间)、TotalFreeSpace(可用空间)
要领:GetDrives(获得可用驱动器列表)
perType罗列型
罗列值有CDRom(光驱)、Fixed(硬盘)、Network(收集驱动器)、Removable(软盘或U盘)等
目次
.NET Framework供应Directory类和DirectoryInfo类 ,以轻易在递次中直接支配目次。 Directory类和DirectoryInfo类位于System.IO定名空间,都可以用来完成竖立、复制、挪动或删除目次等支配 。
Directory类
特征:静态类,可以直接挪用其要领成员,但挪用每一个要领成员都要实行平安搜检,以肯定用户的支配权限。
经常使用要领成员:CreateDirectory(竖立新目次)、Delete(删除目次)、Exists(推断目次是不是存在)、Move(挪动目次)、GetFiles(获得目次的文件列表)、GetDirectories(获得子目次列表)等
DirectoryInfo类
特征:非静态类(必需实例化),须要先竖立实例才挪用其要领成员,在竖立实例时实行平安搜检。
经常使用字段成员;Name(提取目次名)、Exists(是不是存在)、Parent(父目次)、Root(根目次)
经常使用要领成员:Create(竖立目次)、CreateSubDirectory(竖立子目次)、Delete(删除目次)、MoveTO(挪动目次)、GetFiles、GetDirectories等
代码示例:P197
文件
NET Framework供应File类和FileInfo类 ,以轻易在递次中直接支配文件。 File类和FileInfo类位于System.IO定名空间,都可以用来完成竖立、复制、删除、挪动、翻开文件等支配。
File类
特征:静态类,可直接挪用其要领成员。
经常使用要领成员:Open(翻开文件)、Create(竖立新文件)、Copy(复制文件)、Delete(删除文件)、Exists(推断文件是不是存在)、Move(挪动文件)、Replace(替换文件)、AppendAllText(新建文件并增添文本)、ReadAllText(翻开并读取文本内容)等
FileInfo类
特征:非静态类,须要先竖立实例。
经常使用字段成员:Name(提取文件名)、Directory(所属目次)、Exists(是不是存在)、Extension(文件扩大名)、Length(文件长度)、IsReadOnly(是不是为只读文件)
经常使用要领成员:Open、Create、CopyTo(复制到新文件)、Delete、MoveTo(挪动文件)、Replace、EnCrypt(加密文件)、Decrypt(解密文件)等 。
代码示例:P198
途径
文件所在位置称为途径。途径由驱动器盘符、目次名、文件名、文件扩大名和分隔符组成。
途径的示意要领
绝对途径:从驱动器的根目次最先誊写,比方C:\Windows\System32\notepad.exe
相对途径:从当前目次位置最先誊写,比方System32\nodepad.exe(假定当前目次为C:\Windows)
C#将“\”字符视为转义字符,因而当途径示意为字符串时,要运用两个反斜杠示意,比方:
“C:\\Windows\\System32\\notepad.exe”
C#许可在字符串前增添“@”标志,以提醒编译器不要把“\”字符视作转义字符,而视作一般字符,比方:
@“C:\Windows\System32\notepad.exe”
NET Framework供应Path类 ,以协助在递次中治理文件和目次途径。Path类位于System.IO定名空间,是一个静态类。
Path类作用:静态类,用来支配途径的每一个字段,如驱动器盘符、目次名、文件名、文件扩大名和分隔符等。
Path经常使用字段成员:PathSeparator(途径分隔符)、DirectorySeparatorChar(目次分隔符)、VolumeSeparatorChar(卷分隔符)
Path经常使用要领成员:GetDirecotryName(取目次名)、GetFileName(取文件名)、GetExtension(取文件扩大名)、GetFullPath(取完全途径)、GetTempPath(取支配体系的临时文件途径)等
流包括以下基本支配。
读取(read):示意把数据从撒布输到某种数据构造中,比方输出到字节数组中;
写入(write):示意把数据从某种数据构造传输到流中,比方把字节数组中的数据传输到流中;
定位(seek):示意在流中查询或从新定位当前位置。
支配流的类
(1) Stream类
Stream类是一切流的笼统基类。
Stream类的重要属性:CanRead(是不是指出读取)、CanSeek(是不是支撑查找)、CanTimeout(是不是可以超时)、CanWrite(是不是支撑写入) 、Length(流的长度)、Position(猎取或设置当前流中的位置)、ReadTimeout(猎取或设置读取支配的超时时候)、WriteTimeout(猎取或设置写支配的超时时候)
Stream类的重要要领:BeginRead(最先异步读支配)、BeginWrite(最先异步写支配)、Close(封闭当前流)、EndRead(完毕异步读支配)、EndWrite(完毕异步写支配)、Flush(消灭流的一切缓冲区并把缓冲数据写入基本装备)、Read(读取字节序列)、ReadByte(读取一个字节)、Seek(设置查找位置)、Write(写入字节序列)、WriteByte(写入一个字节)
(2) StreamReader和StreamWriter类
平经常使用来支配文本文件
流读取器StreamReader类用来以一种特定的编码从字撙节中读取字符。
流写入器StreamWriter类用来以一种特定的编码向流中写入字符。
(3) FileStream、MemoryStream和BufferStream类
文件流FileStream类:以流的情势来读、写、翻开、封闭文件。
内存流MemoryStream类:示意在内存中竖立流,以临时保留数据,有了它就无需在硬盘上竖立临时文件。
缓存流BufferStream类 :先把流增添到缓冲区,再举行读/写支配,运用缓冲区可以削减接见数据时对支配体系的挪用次数。
注重, FileStream类也具有缓冲功用,在竖立FileStream类的实例时,只须要指定缓冲区的大小即可。
读写文本文件
文本文件是一种纯文本数据组成的文件,只保留了字符的编码。
NET Framework支撑的字符编码
可所以ASCIIEncoding、UTF7Encoding、UTF8Encoding、UnicodeEncoding或UTF32Encoding
在.NET Framework中读写文本文件重要运用:
文件读取器TextReader类和文本写入器TextWriter类
它们的派生类流读取器StreamReader类和流写入器StreamWriter类
或StringReader和StringWriter类
TextReader类及其派生类经常使用要领:
Close(封闭读取器并开释体系资源)、Read(读取下一个字符,假如不存在,则返回-1)、ReadBlock(读取一块字符)、ReadLine(读取一行字符)、ReadToEnd(读取从当前位置直到末端的一切字符)
TextWriter类及其派生类经常使用要领:
Close (封闭编写器并开释体系资源) 、Flush(消灭当前编写器的一切缓冲区,使一切缓冲数据写入基本装备)、Write(写入文本流)、WriteLine(写入一行数据)
ASP.NET简介
ASP.NET是一种动态网页设想手艺,它比其他任何一种动态网页设想手艺更轻易运用。它是一种可升级的Web运用递次开辟手艺,迥殊擅长于用户交互和数据处置惩罚。
ASP.NET不是递次设想言语,是竖立在.NET Framework基本之上的递次设想框架,它用来竖立Web运用递次。
ASP.NET的语法与ASP 兼容,但ASP 运用递次不能直接在ASP.NET环境下运转,须要恰当修正。
ASP.NET与ASP的最大区分在于:前者是编译型的动态网页手艺,而后者是诠释型的动态网页手艺。
ASP.NET比较盛行的版本是1.1版、2.0版和3.0版。与Visual Studio.NET 2003一同宣布的ASP.NET是1.1版,与Visual Studio.NET 2005一同宣布的ASP.NET是2.0版。在2007年与Visual Studio.NET 2008一同宣布的ASP.NET是3.0版。
ASP.NET的上风
可治理性 好
平安性 高
易于布置
机能较ASP和JSP来说大大加强
具有天真的输出缓存手艺
运用Unicode编码,完成了国际化
支撑挪动装备
扩大性和可用性 好
供应跟踪效劳和调试功用
集成于.NET Framework当中,功用壮大
数据库衔接运用ADO.NET手艺
设想Web运用递次的平常步骤
运用VS 2005设想Web运用递次的支配步骤
S1:新建网站
S2:设置网站位置
S3:增添网页
S4:设想Web窗体
S5:设置窗体及窗体控件的属性
S6:编写递次
S7:实行Web运用递次
S8:检察运转结果
注重,细致状况请拜见课本
(1) 生成Web运用递次
支配要领:在Visual Studio .NET 2005的解决方案资源治理器窗口中,右击网站名并挑选“生成网站”
(2) 搜检Web效劳器是不是一般
假如要宣布到当地盘算机,则必需搜检当地盘算机是不是安装了IIS
搜检IIS是不是一般事情
表、纪录和字段
关联数据库体系采纳关联模子作为数据的构造体式格局。
表是按某一大众构造存储的一组类似数据,类似于一样平常生活中的表格。
表按行列体式格局将相干的信息排列成逻辑组。表中的每一行称为纪录。
列称为字段
数据库
数据库将数据表示意为多个表的鸠合,经由历程竖立表之间的关联来定义数据库的构造
所谓主键是指用来唯一标识表中纪录的一个或一组字段。主键不许可有反复值。
外键是指用来衔接另一个表、并在另一表中为主键的字段。
索引
在关联数据库中,平常运用索引来进步数据的检索速率。
纪录在表中是按输入的物理递次寄存的,当为主键或别的字段竖立索引时,数据库治理体系将索引字段的内容以特定的递次纪录在一个索引文件上。
检索数据时,数据库治理体系先从索引文件上找到信息的位置,再从表中读取数据。
每一个索引都有一个索引表达式来肯定索引的递次,索引表达式既但是一个字段,也但是多个字段的组合。
可认为一个表生成多个索引,每一个索引均代表一种处置惩罚数据的递次。
关联
关联数据库的最大优点就是可以防备数据的没必要要的反复,即可以将包括反复数据的表拆分红多少个没有反复数据的简朴表,并经由历程竖立表与表之间的关联来检索相干表中的纪录。
在表与表的关联中,习惯上称主表为父表,而经由历程关联衔接的其他表为子表。
表与表之间能够会有4种关联
一对一关联:指父表中的纪录最多只与子表中的一条纪录相婚配,反之亦然;
一对多关联:指父表中的纪录与子表中的多条纪录有关。比方,关于客户表和定单表来说,每一个定单只与一个客户有关,而每一个客户可以有多个定单,因而客户表和定单表是一对多的关联;
多对一关联:与一对多是互补的,即父表中的多条纪录与子表中的一条纪录相干;
多对多关联:指父表中的多条纪录与子表中的多条纪录有关。
SQL简介
SQL(Structured Query Language)言语是一个综合的、通用的关联数据库言语,其功用包括查询、支配、定义和掌握。
现在,SQL范例有3个版本。
SQL-89
SQL-92
SQL3
Microsoft SQL Server运用的Transact-SQL是在SQL-92范例基本上扩大而来的。
SQL的组成
SQL由敕令、子句和运算符等元素所组成的,这些元素连系起来组成用于竖立、更新和支配数据的语句。
SQL敕令分两大类DDL(数据定义言语)敕令和DML(数据支配言语)敕令。DDL敕令用于竖立和定义新的数据库、字段和索引,重要包括语句:create、drop、alter。DML敕令用于竖立查询,以便从数据库中排序、挑选和抽取数据,重要包括语句:select、insert、update、delete。 P258
SQL子句用于定义要挑选或支配的数据。
select语句
select语句的功用是从现有的数据库中检索数据。
from子句指定数据的泉源,即指出纪录来自哪些表。
where子句指定挑选纪录时要满足的前提。
group by 子句对纪录分组。
having子句肯定在带group by子句的查询中细致显现哪些纪录,可以用having子句来显现满足指定前提的分组。
order by子句对纪录排序。
语句示例见P258-260
delete语句
delete语句的功用是删除from子句列出的、满足where子句前提的一个或多个表中的纪录。
如:
delete from Orders Where OrderId=16
insert语句
insert语句用于增添纪录到表中。
如:
insert into Orders
(CustID,ProductID,OrderDate,SendDate,Qty)
values(‘2’,’5’,’2008-8-12’,’2008-8-13’,1)
update语句
update语句按某个前提来更新特定表中的字段值。
如:
update Products set Price=8900 where Products.ProductId=3
ADO.Net概述
ADO.NET是一种Microsoft最新、最壮大的数据库接见手艺,运用递次经由历程ADO.NET可以非常轻易地接见并处置惩罚存储在种种数据库中的数据。
ADO.NET聚集了许多举行数据处置惩罚的类,这些类有壮大的对数据接见、处置惩罚的功用,如索引、排序、阅读和更新。
ADO.NET集成在.NET Framework中,可以用于任何支撑.NET的盘算机言语,如C#。
ADO.NET重要包括与System.Data定名空间及其嵌套的定名空间,以及system.Xml定名空间等一些与数据接见有关的专用类。
Data Provider
Data Provider供应了DataSet和数据库之间的联络,同时也包括了存取数据库的一系列接口。经由历程数据供应者所供应的运用递次编程接口(API),可以轻松地接见种种数据源的数据。
.NET数据供应递次包括以下几个:
SQL Server .NET 数据供应递次,用于Microsoft SQL Server 数据源,来自于System.Data.SqlClient 定名空间;
OLE DB .NET 数据供应递次,用于OLE DB 公然的数据源数据源,来自于System.Data.OleDb 定名空间;
ODBC.NET 数据供应递次,用于ODBC 公然的数据源来自于System.Data.Odbc 定名空间;
Oracle .NET 数据供应递次用于Oracle 数据源,来自于System.Data.OracleClient 定名空间。
Data Provider
.NET Data Provider有4个中心对象:
Connection对象用于与数据源竖立衔接;
Commmand对象用于对数据源实行指定敕令;
DataReader对象用于从数据源返回一个仅向前的(forward-only)只读数据流;
DataAdapter对象自动将数据的种种支配变换到数据源相应的SQL语句。
DataSet
ADO.NET和中心组件是DataSet。
可以将DataSet想像成内存中的数据库,它是不依赖于数据库的自力数据集。自力是指纵然断开数据衔接或封闭数据衔接,DataSet依旧可用。
在ADO.NET中,DataSet是特地用来处置惩罚从数据源获得数据,不管底层的数据是什么,都可以运用雷同的体式格局来支配从差别数据源获得的数据。
DataSet内部是用XML来形貌数据的。XML是一种与平台无关、数据无关且能形貌庞杂数据关联的数据形貌言语。
ADO.NET支配数据库的流程
起首运用Connection对象衔接数据库;
假如实行不须要返回结果的数据库实行敕令或存储历程,可以运用Command对象;
DataReader对象用于从数据源中读取仅向前和只读的数据流。
DataSet是数据的内存驻留示意情势,它供应了自力于数据源的一致关联编程模子。DataSet示意全部数据集,个中包括表、束缚和表之间的关联。
与现有数据源的交互经由历程 DataAdapter 来掌握。DataAdapter对象用于从数据源中猎取数据、添补DataSet中和表和束缚并将对DataSet的变动提交回数据源。
运用Connection对象接见数据库
衔接数据库步骤
(1)定义衔接字符串
运用SQL Server身份考证:
Data Source=效劳器名;Initial Catalog=数据库名; User ID=用户名;Pwd=暗码
运用Windows身份考证:
Data Source=效劳器名;Initial Catalog=数据库名;
Integrated Security=True
(2)竖立 Connection 对象
SqlConnection connection = new SqlConnection(connString);
(3) 翻开与数据库的衔接
connection.Open( );
运用Command对象接见数据库
运用 ExecuteNonQuery() 的步骤:
(1)竖立 Connection 对象;
(2)定义sql 语句;
(3)竖立 Command 对象;
(4)实行 ExecuteNonQuery() 要领;
(5)依据返回的结果举行处置惩罚。
以上就是C#中关于观点体系的总结的细致内容,更多请关注ki4网别的相干文章!