C#知识点.docx
《C#知识点.docx》由会员分享,可在线阅读,更多相关《C#知识点.docx(18页珍藏版)》请在冰豆网上搜索。
C#知识点
1.C#的程序的两种版本:
“控制台应用程序”;”Window应用程序”。
using<命名空间>,是导入命名空间,构建桌面应用程序是需要”WindowForm“类库。
2.Main()函数(大写),C#程序的入口点。
3.C#中数据类型:
值类型;引用类型。
4.值类型:
●简单类型(13种,其中9中整数类型,3中实数类型,还有布尔类型。
见P6表2.1);
●枚举类型;
●结构类型。
5.引用类型:
class(object类,string类),interface,数组,委托。
6.两种类型的关系:
●值类型包装成引用类型的处理——“装箱”。
●将object类型转换为值类型——“拆箱”,必须显示类型转换。
●例:
intx=222,y;
objecto=x;//装箱
y=(int)o;//拆箱
7.常量:
●128UL,表示一个无符号长整型;
●3.14m,表示decimal类型(128位的高精度十进制数);
●\0,表示空字符(在转义字符中);
●逐字字符串,@D:
\ECIT\zqk(路径的写法),字符表示原意,不是转义了。
8.C#中标识符:
●必须字母和下划线开头;
●后可跟字母,数字,下划线;
●不能和关键字同名,如果要同名,使用@开头;
●以@开头也可以。
9.运算符:
●取模运算不同于C/C++,可用于浮点类型;
●==和!
=当作用于简单类型是比较数据内容;作用于引用类型是比较是否指向同一个对象,要比较内容,使用object类的Equals()方法。
其中如果又是作用于字符串,为null;或不同的对象,但是内容一样,就是字符串的长度和对应字符相同,比较结果为相同。
例题可看书本P14。
●逻辑运算:
短路的概念,看懂P15例题。
●重点是掌握运算符的优先级与结合性,P19表2.9。
10.表达式中,需强制类型转换的:
float或double类型与decimal类型运算,需要都为decimal类型。
11.switch语句的表达式能是关系运算,这是C#的强大之处,所以case子句能用true和false。
12.数组:
●定义一维数组时,秩说明符即[],必须在数组名前。
不像C/C++,JAVA,前后都可。
●多维数组:
定义形式:
<类型>[,]数组名,n个逗号,表示(n+1)维。
●不规则数组(重点),最多考二维不规则,例:
int[][]array=newint[3][];
array[0]=newint[]{0};
array[1]=newint[]{1,2};
array[2]=newint[]{3,4,5};
●Array类,Length属性,求数组长度;GetLength()方法,获取某一维的大小。
●foreach遍历:
迭代变量是只读的。
要会这种遍历的写法,可看P42例2.18。
13.类:
●在C#中,类的访问默认为public;internal修饰符,表示该类能够由程序集的所有文件使用,可理解为在一个项目下中使用;sealed,修饰为密封类,就像JAVA的final,表示是不可在被继承。
●类中的常数表达式,就是用const修饰的,是一个可在编译时计算的值,和静态成员有区别,并且const和static不可同时使用;但也是通过类名来调用。
●在C#中数据成员叫做字段。
字段修饰中,记住readonly修饰;
●readoly和const的区分:
◆readonly修饰后,只能在声明时赋值,或者在构造函数中,最终以构造函数中的赋值为准。
赋值后在其他地方就不能对它再写了。
◆const必须在声明时赋值,赋值后就不能变。
◆所以如果要运行时,即在构造中,赋值后的不能变的,用readonly。
●静态构造函数:
只对静态成员初始化;静态构造函数由系统激活调用,不能被人为调用;在创建对象或引用了静态成员时,激活静态构造函数,至多被执行一次。
●析构函数,执行顺序和构造函数相反。
●类中的方法:
(C#比JAVA要求的更严格,这样也使语法更加简单明了)
修饰符
说明
new
隐藏父类的
virtual
希望子类重写的
override
与virtual配套使用
sealed
密封,与override同时使用。
阻止子类重写
abstract
抽象类中使用该修饰,表示抽象方法,基础抽象类的非抽象子类都要重载实现该抽象方法。
P93例4.5。
extern(了解)
表示该方法从外部实现
●引用参数(ref关键字):
在函数调用时也要对应的写ref;实参和形参必须类型完全一致;实参必须为变量,不能为常量。
●输出参数(out关键字):
只能从方法中传出值,不在实参处给数据。
这是C#的特殊之处,例题可看P62例3.10。
●参数数组(params关键字):
一个方法中只能有一个params修饰参数,并且放在最后;实质是传递一个数组,还有就是实质是传递数据的副本,是一个值传递;params不能和ref和out组合使用;
●属性:
对字段的读和写,在类外对属性赋值或调用。
get(读访问器);set(写访问器);属性的写法和方法类似,只是没有括号,和属性名规范写法是大写。
静态属性不能访问静态数据和引用this。
14.关于什么继承和多态的知识点就不说了,和JAVA原理一样。
只是写法不同,即使用了更规格的关键字,new;virtual;override。
可以看下P89例4.3,如果懂了就没问题。
15.C#中的多态中,延续了C++的操作符重载。
●所谓操作符重载,我们知道,一般的运算符只能作用于基本数据类型,如果是用户自定义的类型,即类类型,如果想让运算符形象化,就得把它写成一个函数,实现其计算的功能。
●重载的函数签名,必须用publicstatic修饰,能重载的操作符详见P95。
16.关于类型转换:
●小范围赋值给大范围的,会隐式转换,所以这部分关键是对数据类型表示范围的考察,熟记P6表2.1。
●char类型可以转换为整数或实数;反之不行,就得强制转化了。
●枚举隐式转中,只能把0赋值给枚举对象。
●Convert类的使用,P101表4.3,包括了全部类型的转化;如果转化后数据丢失,系统会抛出异常。
17.接口:
C#中,接口名规格写法是“I”开头,在接口中的成员不能加修饰符,默认是public。
C#的接口可以显示实现,那么也就要显示调用,即使用接口类型调用相应接口的方法。
18.结构体:
实质可理解为类,但与类有区别(P107表4.4)。
19.枚举:
不能用char作为枚举的基本类型,默认的基本类型是int类型。
20.集合类:
必须实现IEnumerable和IEnumerator接口的类。
21.异常的知识点和JAVA一样,有一个特有的:
C#中的catch可以有一个子句,只能有一个子句,子句放在其他catch最后,可看P128例4.27。
22.C#独有的:
委托和事件,也是比较难的,了解一点概念。
●委托的关键字,delegate,是引用类型。
●所谓委托就是调用特定的函数,可以想象是挂钩某个函数,
●多播就是委托多个函数,实质就是重载了“+”和“-”,实现的多个委托的结合或减去。
●事件的定义:
[修饰]event<委托名><事件名>。
23.小结:
前面的知识点,说的不是很详细,因为学过,如果面向对象的知识懂了,可以把重点放在看5-8章,不过考试可能还是两大部分各占一半的分。
24.Windows应用程序,重点记住控件,及其属性,和事件:
●Form类,Windows窗体控件
重要属性/事件
说明
FormBorderStyle属性
★默认值是:
Sizable
★固定对话框:
FixedDialog
StartPosition属性
★默认值:
WindowsDefaultLocation
★CenterScreen:
加载后位于屏幕中间
TopMost属性
设置是否位于位于Z轴的最顶端
Test属性
设置窗口的标题
AcceptButton属性
设置为一个按钮名时,并且当按钮获得焦点后,当按下Enter键,自动触发按钮的Click事件。
CancelButton属性
同样,按下Esc键时触发按钮的Click事件
Load事件
窗体加载时触发,一般用于对一些控件做初始化工作。
●Lable控件,LinkLabel控件:
重要属性/事件
说明
Text属性
标题名
Alignment属性
标题对齐方式
LinkColor属性
链接默认状态下的颜色
VisitedLinkColor属性
链接访问后的颜色
ActiveLinkColor属性
单击链接时的颜色
LinkVisited属性
设置为true后,如果链接访问过,就一直保存VisitedLinkColor属性设置的颜色。
LinkClick事件
单击链接产生的事件
●按钮(Button):
重要属性/事件
说明
TextAlign属性
按钮Text属性文本的对齐方式
Click事件
记住没有DoubleClick事件
●文本框(TextBox):
重要属性/事件
说明
MultiLine属性
为true后,可多行显示文本,为false,单行显示,最多2048个字符
SelectionIndex属性
通过编程方式设置,表示选择文本的开始位置
SelectionLength属性
要选择文本的长度
PasswordChar属性
以某种字符,密文显示
MaxLength属性
设置限长文本
Enter事件
当获得焦点,成为活动控件时触发
Clear事件
清除全部文本
TextChanged事件
最重要的事件,当文本发生变化时触发
●列表框(ListBox):
重要属性/事件
说明
MultiColumn属性
为true时,多列显示,有一个水平滚动条;为false时,单列显示,有一个垂直滚动条。
ScrollAlwaysVisible属性
设为true,总有滚动条显示
SelectionMode属性
★默认值为One;
★设为None时,不可选;
★为MultiSimple时,多选;
SelectedIndex属性
返回选择的索引
SelectedItem属性
返回选中的项文本
Items.Count属性
是列表项总数
Items.Add()方法
参数就是要加载的字符串
Items.Insert()方法
参数1,要插入的位置,参数2文本
Items.Clear()方法
清除全部项
Items.Remove()方法
参数为要移除的项名称
Items.RemoveAt()方法
使用索引移除
●ComboBox控件:
(由一个文本框可一个列表款组合成)
DropDownStyle属性
★ComboBoxStyle.DropDown,下拉式。
文本可编辑,单击按钮时,列表显示
★ComboBoxStyle.Simple,简单模式。
文本可编辑,总是显示列表
★ComboBoxStyle.DropDownList,下拉列表式,不可编辑文本。
方法和ListBox的一致
●ListView控件:
View属性
★LargeIcon:
默认视图模式,大图标。
★SmallIcon:
小图标。
★List:
单列显示。
★Details:
详细显示,功能能实现像资源管理器,有列标题。
Items属性
★可以打开ListViewItem集合编辑器,编辑项。
★当为Details模式时,可以编辑列标题,不要求使用代码添加列标,使用ColumnHeader集合编辑器。
Activation属性
采取何种方式激活:
★默认为Standard,双击激活;
★OneClick,单击一下激活;
★TwoClick,双击激活,单击一次后变色,后鼠标移上去后会变色。
●状态栏(StatusStrip类):
Items属性
4个重要的半生类:
★ToolStripStatusLabel,用于显示文本的面板;
★ToolStripProgressBar,进度条;
★ToolStripDropDownButton,可添加一个类型系统开始菜单;
★ToolStripSplitButton,功能类似上者;
●进度条(ProgressBar类):
Minimun属性
设置进度条的最小值
Maximun属性
设置最大值
Value属性
设置当前值
●图片框(PictureBox类):
Image属性
导入图片
SizeMode属性
★默认值为Normal,图片与图片框左上角对齐,裁剪右下部分;
★AutoSize,控件大小调整为图片大小;
★CenterImage,图片中间部分显示,裁剪边缘;
★StretchImage,图像大小调整为框大小,会丢失像素。
●定时器(Timer):
Enable属性
设为布尔值,为true时,可触发Tick事件,反之不能。
Interval属性
时间间隔,单位为毫秒(ms),1000ms=1s。
Tick事件
每隔时间间隔触发
因为Timer控件经常用于显示当前系统时间,记住DataTime.Now.ToLongTimeString()的使用。
●RadioButton控件,单选按钮;CheckButton,复选按钮:
都有Checked属性
用于判断是否选中
都有CheckedChanged事件
当该类控件数组改变状态时触发,这个是重点,P153例5.13的后半部分的写法,当多个该类控件位于一个容器控件中,可以使用foreach的遍历方法判断。
都有AutoCheck属性
设置为true,各自代表:
★单选按钮:
系统清除其他按钮的选中状态
★多选按钮:
系统会自动被选中,即打个勾。
CheckButton的CheckState属性
返回CheckState.Checked,或CheckState.Unchecked,当它的ThreeState属性设置为true时,会返回CheckState.Indeterminate(不确定状态,即不可选)
●GroupBox:
属于容器控件,可以布局其他子控件,其Controls属性表示其中的控件数组。
C#中,控件可复制粘贴,很方便。
●菜单(MenuStrip类):
(该控件要考也是编程方式添加一个菜单):
★ToolStripMenuItem类,全部的菜单项类,包括顶级菜单项和子菜单项都是使用该类,只是在加载顶级菜单时,是MenuStrip的对象,使用Items.AddRange()方法,参数是一个ToolStripItem数组,即是ToolStriMenuItem成员。
当加载子菜单时,就是上一级菜单对象,使用Items.DropDownItems.AddRange()方法。
★了解一下ToolStripSeparator类,用于分隔。
★重点看P156例5.8。
●对话框:
无模式对话框的显示,使用Show()方法
所谓无模式就是,可以多个窗体切换
模式对话框使用ShowDialog()方法打开
即表示,必须处理完该模式对话,关闭后才可切换
DialogResult属性
关闭时返回值,主用是DialogResult.Ok。
如果设置为DialogResult.None,对话框一直保存打开状态
★通用对话框有很多种类,P158表5.10。
★上课介绍过FontDialog和ColorDialog,注意其FontDialog.Font(代码中是使用对象获取)属性,ColorDialog.Color属性,用于设置字体和颜色。
★书上介绍的OpenFileDialog,打开文件对话框
文件对话框的重要属性:
★DefaultExt:
设置默认后缀。
★Filter:
过滤器,写法要会,例如:
“文本文件(*.txt)|*.txt|所有文件(*.*)|*.*”
★FilterIndex:
设置使用哪种过滤。
★FileName属性用于返回用户选择文件名。
●MDI窗体,多文档界面设计:
★涉及窗体控件的IsMdiContainter属性,设为true的话,就为MDI父窗口。
★一般会把父窗口的WindowState属性设为Maxmized,即最大化。
★如果加载一个新的窗口控件:
选择“项目”—>“添加Windows窗体”—>打开添加新项对话框—>默认就是选择的“Windows窗体”->单击“添加”按钮。
★子窗体对象的MdiParent属性赋值为父窗体对象。
并且子窗体打开只能是无模式打开,即使用Show()方法。
●打印控件:
(了解)
相关类
说明
PrintDocument组件
用于打印输出,主要是其PrintPage事件
PrintDialog组件
用于选择打印机,选择打印项目等
PrintPreviewDialog组件
打印预览
25.GDI+编程的相关类:
(这一章的内容,有的函数的参数较多,有点复杂,只有靠记了,在第6章)
类
重要方法
说明
Graphics
★如果获取Graphics对象:
在窗体的Paint事件中,把PaintEventArg类的Grapahics属性赋值获得。
★使用控件或窗体的CreateGraphics()获取。
★使用Graphics的静态方法FromImage(),其中参数是一个Image对象。
★有很多画图的函数,如画矩形DrawRectangle();画线DrawLine()等等。
★绘制实心的图像,如FillPie(),填充一个扇形,其中参数较多,以看书为准,P173图6.4。
★输出字符串,DrawString()。
用户通过Graphics对象在屏幕上绘制图形,写文本,操作图像。
Brush(抽象类),只用使用其子类实例化
SolidBrush
纯色画刷
TextureBrush
使用图像绘制
LinearGradentBrush
渐变色
Pen
构造方法中,可:
★由一个画刷对象作参数;亦可加上画笔的宽度
★由一个Color对象作参数;也可指定宽度
26.首先大体上对C#文件类体系了解一下,详细看书本P176页图7.1:
27.File类:
主用用于对文件的管理。
重要静态方法,所以用类名调用
说明
★Create()
★CreateText()
★参数是文件的路径,返回一个FileStream对象,也就是创建流文件
★创建文本文件,返回一个StreamWriter对象
★Open()
★OpenText()
★打开一个已经存在的文件,返回一个FileStream对象
★打开一个存在的文本文件,返回一个StreamReader对象
Exists()
判断文件是否存在,返回逻辑值
Copy()
参数1是源文件,参数2是目标文件
Move()
参数和复制文件一样,实现文件剪切
Close()
关闭文件,对于流文件,必须先关闭再删除
Delete()
删除文件
28.FileInfo类和File类的大部分功能相似,唯一不同的用法,FileInfo类必须实例化对象,使用其实例成员函数,实现对文件的操作。
记住一个Length属性,获取文件大小。
FileStream类,用于创建二进制文件和其他类型的文件,也是要实例化对象,它的构造函数参数较多,了解一下。
例如:
stringpath=@"D:
\222.bin";
FileStreamfs=newFileStream(path,FileMode.Create);
try{
//TODO
}catch(Exceptione){}
finally
{
fs.Close();
}
29.掌握相关知识点,一般打开一个文件,需要关闭它,一般写成try–catch–finally模块,在C#中,提供了一种简洁的方式,使用using模块,可以省去自己手动关闭文件的操作,包括后面的数据库操作也是一样。
例如:
stringpath=@"E:
\222.txt";
using(StreamWritersw=File.CreateText(path))
{
//TODO
}
30.Directory类:
对文件夹的管理。
静态方法
说明
CreateDirectory()
参数是路径名,返回一个DirectoryInfo对象
Exists()
判断是否存在
Move()
剪切文件夹,参数1源文件夹,参数2目标文件夹。
Delete()
删除文件夹
GetDirectories()
获得文件夹下的子文件夹名称,返回一个字符串数据组,
GetFiles()
获得文件下的全部文件名称,也是返回一个字符串数组
31.DirectoryInfo类,同样道理,也是要求实例化对象后再使用,不同点:
MoveTo()
那么使用对象操作,带一个参数,剪切到新的路径中。
CreateSubDirectory()
在当前对象表示的文件夹下,创建子文件夹
GetDirectories()
返回子目录,是返回一个DirectoryInfo对象数组
GetFiles()
返回文件夹下的全部文件,是返回一个FileInfo对象数组
32.Path类:
功能是处理路径字符串的,也都是静态方法:
(详细见P181表7.4)
ChangeExtension()
顾名思义,更改文件后缀
GetExtension()
获取后缀名
GetFileName()
获取一个路径中的文件名及其后缀
HasExtension()
判断是否带了后缀
33.关于文件的读写,主要也是对文本文件的读写,那么就涉及:
●StreamReader类:
在构造函数当中,有一个可以指定文件的编码方式的,所有了解一下Encoding类,有ASCII文件,Unicode编码文件等。
重点是掌握,ReadLine()方法,读一行;Read()方法,读取字符,返回一个int类型。
●StreamWriter类:
写文本文件,构造其对象的方法同样很多,不重复说了,重点是写文件的函数,WriteLine(),可写入的数据类型有很多,并自动换行。
Wirte()函数,形式一样很多,很灵活,可见P185书本例题。
34.数据库的连接:
●重点是掌握Connection类的子类;
●对于Access数据库的连接(估计考试也是连接Access数据库),OleDbConnection类,需要引起System.Data.OleDb命名空间;
●主要是要记住连接的字符串怎么写,就是构造函数的参数:
“Provider=Microsoft.Jet.OLEDB.4.0;DataSource=数据库的全路径”
●连接后要使用Open()函数打开数据库,并且可以判断是否连接成功和打开成功,例如:
u