C# 学习笔记(3)

静态类和成员静态类不需要(也不能)实例化,只需要直接调用它的成员即可,C# 中的 Math 类即属此类。静态成员由类的所有实例共享,实例字段可以加 this 来引用,静态字段成员不允许,因为 this 是指实例化的类对象静态方法不需要实例化类就可以使用,因为它只与类定义有关,与实例无关。
泛型C# 2.0 中引入的类型,相当于 C++ 中的类模板,只要用来实现简化设计并保证类型安全。一个用泛型定义的类或接口,根据泛型的实例化类型,在编译期间由编译器派生出所有相应的类/接口定义。由于对不同类型的定义只需要设计一个泛型原型,避免了使用 object 类型实现灵活性的同时带来的类型不确定导致的不安全,所以有效的提高了编程效率,又由编译器来保证了类型安全。
反射一种在运行时才能决定要运行的对象和方法的技术。你可以参照 vfp 中的宏或 ExecScript 来理解,当然它们使用的技术完全不同,但它们要实现的目的是相似的。更类似的是 COM 中的后期绑定技术,COM 中后期绑定就是根据 guid 在注册表中查找类型库的位置,然后调用它创建一个实例,将要调用的属性/方法传给 IDispatch 接口得到它的 id,再通过接口的 Invoke 方法调用对应的属性或方法。
集合一个比较烦却又可能经常要使用的类簇,.Net Framework 中的 ArrayList(一个可动态 resize 的数组类),HashTable,Queue,Stack,SortedList,... 都属此家族,其下还有更复杂的派生类,常见的字典类就在其中。有些我们可能一辈子也不会用到,像 Queue,Stack,除了在数据结构这样的底层操作中会频繁使用外,一般的管理类软件中不大可能直接用到它们,即使像进销存中的库存管理,虽然也有先进先出(Queue),后进先出(Stack)这样的算法,但也绝不可能简单的用集合来实现。
垃圾收集器这个跟 vfp 基本一致,内存清理/回收工作由它来自动管理

今天的成果是完成了第二部分 WinForm 的学习,原来没有想到这一部分会如此顺利。其实原因实在简单,所有的 Windows 界面设计都一样,无非就是拖放既有的控件,设置好属性,接下来用不同的语法调用方法或函数实现同样的功能,在已有的事件中写好响应事件的代码,顶多再自定义几个事件以便更灵活的实现松散耦合的编程。

.Net 程序员确实比较幸运,像 C# 这样的语言已提供了 95% 以上的常见控件,并且可设置的属性和可利用的方法/事件要多出不少,像 ImagesList 控件就可以直接使用 32 位的颜色(带 Alpha 通道的半透明效果由此而来),不像 vfp/vb 程序员必须使用外部的 ActiveX 控件来实现,而且受到诸多限制(这些限制主要是 MS 对这些控件的不做为,所以我现在基本基本抛弃了它们而转投使用另一家的第三方控件)。

此外,在 C# 的 WinForm 控件集中居然没有发现显示 avi 动画的控件,这个可是 ComCt232 和 MsComCt2 中都有的啊?其他的倒是一应俱全,连文件/文件夹监视和 CommonDialog 中的所有对话框都有。虽然很多人现在已抛弃 WinForm 转而使用 Web 界面或使用 WPF 编程,但从我的客户群来看,一段时间内还是需要以 WinForm 形式为主的。

几个数据绑定控件没有看,这个等看到数据访问部分时再研究。

打印部分跟使用 C/C++ 几乎没有差别,同样是直接画图方式,只不过用打印机 DC 代替了屏幕 DC。至于高级的报表工具,C# 本身是没有的,但 VS 中附带了一个水晶报表控件。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值