Csharp程序编程
- 格式:ppt
- 大小:445.50 KB
- 文档页数:43


邓有权
第 1 页 共 8 页 Created by donny 学习笔记:反射初步理解、应用 2011-8-31 反射无处不在,作为程序员,每天都在使用。Vs的智能提示,就是通过反射获取到类的属性、方法等。还有反编译工具也是通过反射实现。 程序集介绍 程序集是.net中的概念。.net中的dll与exe文件都是程序集。pdb是一个保存调试信息的文件。exe与dll的区别:exe可执行文件,其包含入口函数Main();dll为类库编译生成的文件,不可直接运行。 扩展:如果在类库中写一个静态Main(),并在类库上右击,选择属性,把类型改为可输出(输出类型指Windows Form应用程序和控制台应用程序),那么这个类库也可以执行了。 程序集(Assembly),可以看做是一堆相关类打的一个包,相当于java中的jar包(*)。 程序集包含资源文件(如窗体加载的图片,原文件删除仍可以显示)、类型元数据(描述在代码中定义的每一类型和成员,二进制形式)、IL代码(微软中间语言,这些都被装在exe或dll中)。每个程序集都有自己的名称、版本等信息,这些信息可以通过每个项目中Propertities文件夹下的AssemblyInfo.cs文件来自己定义。 程序集好处 程序中只引用必须的程序集,减小程序的尺寸。把不同功能放到不各自的程序集中,需要什么功能只引用某一程序集即可。 程序集可以封装一些代码,只提供必要的访问接口。 添加程序集的引用 添加路径、项目引用、GAC(全局程序集缓存,不需要把dll文件拷到exe文件的目录中,例如.net系统dll) GAC的详细配置参考:/kb/815808/zh-cn GAC目录C:\WINDOWS\assembly 不能循环添加引用 在c#中添加其他语言编写的dll文件的引用。(参考PInvoke,在.net中调用非程序集的dll) 反射就是动态获取程序集的元数据(提供程序集的类型信息)的功能(或理解为:通过类型元数据来获取对象的一些相关信息,并且还可以实例化对象调用方法等)。 反射可以直接通过.dll来创建对象,调用成员。反射让创建对象的方式发生了改变。 Type类实现反射的一个重要的类,它在编译生成的dll中以二进制形式存储已经写好的各种类型。通过它就可以获取程序集中类的所有信息包括方法、属性等。可以动态调用类的属性、方法。 Type是对类的描述,它是一种类型。 先定义类库,包含公有Person类 和Iface接口、以及私有委托Mydelegate。类库类图实际可能不提供,这里为了方便说明Type类。 邓有权
[编者的话:]关于数据库编程,微软提供了一个统一的数据对象访问模型,在Visual
Studio6.0中称为ADO,在.NET中则统一为,掌握就等于掌握了数据库编程的核心,因此有必要首先复习一下以前发表的《完全攻略》。
针对数据库编程始终是程序设计语言的一个重要方面的内容,也是一个难点。数据库编程的内容十分丰富,但最为基本编程的也就是那么几点,譬如:连接数据库、得到需要的数据和针对数据记录的浏览、删除、修改、插入等操作。其中又以后面针对数据记录的数据操作为重点。本文就来着重探讨一下Visual C#数据库基本编程,即:如何浏览记录、修改记录、删除记录和插入记录。
一.程序设计和运行的环境设置:
(1).视窗2000服务器版
(2).Microsoft Data Acess Component 2.6 以上版本 ( MDAC 2.6 )
(3) FrameWork SDK Beta 2
为了更清楚的说明问题,在数据库的选用上,采用了当前比较典型的数据库,一个是本地数据库Access 2000,另外一个是远程数据库Sql Server 2000。其中本地数据库名称为"db.mdb",在其中定义了一张数据表"person","person"表的数据结构如下表:
字段名称 字段类型 字段意思
id 数字 序号
xm 文本 姓名
xb 文本 性别
nl 文本 年龄
zip 文本 邮政编码
远程数据库Sql Server 2000的数据库服务器名称为"Server1",数据库名称为"Data1",登陆的ID为"sa",口令为空,在数据库也定义了一张"person"表,数据结构如上表。
二.如何浏览数据:
在《Visual C#的数据绑定》中,已经了解了如何把数据集中的某些字段绑定到WinForm组件的某个属性上,这样程序员就可以根据以WinForm组件的来定制数据显示的形式,并且此时的WinForm组件显示内容就可以随着记录指针的变化而改变。至此可见,浏览数据记录的关键就是如何改变记录指针。要实现这种操作,就要使用到BindingManagerBase类,此类的主要作用是管理对于那些实现了对同一个数据源进行绑定的对象。说的具体些,就是能够使得Windows窗体上的已经对同一数据源进行数据绑定的组件保持同步。在BindingManagerBase类中定义了一个属性"Position",通过这个属性就可以改变BindingManagerBase对象中的数据指针。创建BindingManagerBase对象必须要使用到BindingContext类,其实每一个由Control类中继承而得到的对象,都有单一的BindingContext对象,在大多数创建窗体中实现数据绑定组件的BindingManagerBase对象是使用Form类的BindingContext来得到。下列代码是以Access 2000数据库为模型,创建的一个名称为"myBind"的BindingManagerBase对象。
9.C#编程学习——sin曲线
源码
using System;
usingSystem.Drawing;
usingSystem.Windows.Forms;
classSineCurve : PrintableForm
{
publicnewstaticvoid Main()
{
Application.Run(newSineCurve());
}
publicSineCurve()
{
Text = "Sine Curve";
}
protectedoverridevoidDoPage(Graphicsgrfx, Colorclr, int cx, int cy)
{
PointF[] aptf = newPointF[cx];
for (int i = 0; i < cx; i++)
{
aptf[i].X = i;
aptf[i].Y = cy / 2 * (1 - (float)
Math.Sin(i * 2 * Math.PI / (cx - 1)));
}
grfx.DrawLines(newPen(clr), aptf);
}
}
[C#]CSharp基本语法
⼀、基础1.规范:
除常量外,所有变量⽤驼峰命名⽅式,其它⽤帕斯卡命名⽅式.
2.编译:
⾸先由csc.exe将cs⽂件编译成MSIL.当双击exe的时候,会由clr的jit(just in time)编译器再次编译成cpu指令.csc位置(如):C:\Windows\\Framework\v4.0.30319\csc.exe
csc命令(如):csc /t:library acme.cs(编译成类库) csc /r:acme.dll test.cs(引⽤acme.dll后编译)
ngen位置(如):C:\Windows\\Framework\v4.0.30319\ngen.exe(可实现jit效果)
ngen命令(如):ngen install D:\SystemTool\HelloWorld.exe (备注:exe⽅式)
3.⾯向对象(Object-Oriented ⾯向对象编程:Object-Oriented-Programming):
类是抽象的,对象是具体的.
析构函数:~ClassName(){}.实际是重写基类的Finalize()⽅法
4.变量:
成员变量:默认有⼀个初始值.string->null,int->0,bool->false
局部变量:使⽤前必须赋值.
5.封装:
a.字段封装成属性 b.⽅法参数封装成类 c.⽅法重⽤ d.封装成类库
6.继承:
单根性,传递性
构造函数不继承.
7.多态:
a.vitual和override⽅法可以给重写
b.abstract⽅法
c.接⼝
8.访问修饰符:
成员访问修饰符:private:当前类内
protected:当前类内和⼦类内
internal:当前程序集内
protected internal:当前程序集内或当前类内和⼦类内public:所有都可以
命名空间下的访问修饰符:
只允许使⽤public和internal,但是微软内部使⽤private.